This commit is contained in:
@@ -360,6 +360,7 @@ $('aiProviderForm').addEventListener('submit',saveAiProviderSettings);$('aiProvi
|
|||||||
const actionButton = event.target.closest?.('[data-source-action="toggle"]');
|
const actionButton = event.target.closest?.('[data-source-action="toggle"]');
|
||||||
if (!actionButton) return;
|
if (!actionButton) return;
|
||||||
const source = findRegisteredSource(actionButton.dataset.sourceId);
|
const source = findRegisteredSource(actionButton.dataset.sourceId);
|
||||||
|
if (!source) return;
|
||||||
const needsPromptConfig = ['public_website','dns','rdap','ct_logs','openstreetmap','wikidata','common_crawl'].includes(sourceType(source));
|
const needsPromptConfig = ['public_website','dns','rdap','ct_logs','openstreetmap','wikidata','common_crawl'].includes(sourceType(source));
|
||||||
if (source && !source.configured && source.available && needsPromptConfig) { event.preventDefault(); event.stopImmediatePropagation(); configureSourceFromUi(source, actionButton); }
|
if (source && !source.configured && source.available && needsPromptConfig) { event.preventDefault(); event.stopImmediatePropagation(); configureSourceFromUi(source, actionButton); }
|
||||||
}, true);
|
}, true);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"schema": 1,
|
"schema": 1,
|
||||||
"version": "phase-28",
|
"version": "phase-29",
|
||||||
"entrypoints": [
|
"entrypoints": [
|
||||||
"config.js",
|
"config.js",
|
||||||
"app.js",
|
"app.js",
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
],
|
],
|
||||||
"integrity": {
|
"integrity": {
|
||||||
"config.js": "sha256-40caf170414913b9ab63df455d1510d6ce11f1904b40441f20396291861f76fe",
|
"config.js": "sha256-40caf170414913b9ab63df455d1510d6ce11f1904b40441f20396291861f76fe",
|
||||||
"app.js": "sha256-ab5c2ac47fa221b9894eaf1a7802b9f60a010beed27b0d0e4d3ba84ffa03f2c1",
|
"app.js": "sha256-3a474d4753b84fa27ecac448056d13c4ee25341eb7877950fb52a8dc6922716f",
|
||||||
"styles.css": "sha256-ba90290ab11e82a6b2639dfd70d1e74502c1cacb2b26cf1db92b45beb67ac03f",
|
"styles.css": "sha256-ba90290ab11e82a6b2639dfd70d1e74502c1cacb2b26cf1db92b45beb67ac03f",
|
||||||
"index.html": "sha256-316b06d3062b77330962c303020ab4577cbbbc8c92bf33a99957ab167cb85ea2",
|
"index.html": "sha256-316b06d3062b77330962c303020ab4577cbbbc8c92bf33a99957ab167cb85ea2",
|
||||||
"health.html": "sha256-c352a6f37aa24628cfc8d5709a70ff2d94181d192ed5fe00916cca9378a61d81",
|
"health.html": "sha256-c352a6f37aa24628cfc8d5709a70ff2d94181d192ed5fe00916cca9378a61d81",
|
||||||
|
|||||||
@@ -84,6 +84,7 @@ check('auth.display-name-greeting', 'authenticated display name drives the greet
|
|||||||
check('sources.registry-status', 'source registry exposes governed configuration and operational status fields', all(['source_code', 'display_name', 'configured', 'available', 'enabled', 'API credential', 'Terms', 'Owner', 'Rate limit', 'Daily quota', 'Last health', 'Success / error', 'Circuit', 'data-source-action="review"', 'data-source-action="test"'], token => `${html}\n${js}\n${css}`.includes(token)));
|
check('sources.registry-status', 'source registry exposes governed configuration and operational status fields', all(['source_code', 'display_name', 'configured', 'available', 'enabled', 'API credential', 'Terms', 'Owner', 'Rate limit', 'Daily quota', 'Last health', 'Success / error', 'Circuit', 'data-source-action="review"', 'data-source-action="test"'], token => `${html}\n${js}\n${css}`.includes(token)));
|
||||||
check('sources.optional-gated', 'optional adapters are rendered unavailable until configured', all(['/api/v1/sources/adapters', 'configuration-gated', 'Optional adapter', 'source.optional', 'available:Boolean(adapter.available)'], token => `${html}\n${js}\n${css}`.includes(token)));
|
check('sources.optional-gated', 'optional adapters are rendered unavailable until configured', all(['/api/v1/sources/adapters', 'configuration-gated', 'Optional adapter', 'source.optional', 'available:Boolean(adapter.available)'], token => `${html}\n${js}\n${css}`.includes(token)));
|
||||||
check('sources.registered-actions', 'registered sources keep Review/Test actions actionable while previews remain disabled', js.includes("${!source.id?'disabled':''}") && js.includes("if (!source || !source.id)"));
|
check('sources.registered-actions', 'registered sources keep Review/Test actions actionable while previews remain disabled', js.includes("${!source.id?'disabled':''}") && js.includes("if (!source || !source.id)"));
|
||||||
|
check('sources.toggle-guard', 'source toggle handler ignores unknown rows before reading source fields', js.includes("const source = findRegisteredSource(actionButton.dataset.sourceId);\n if (!source) return;\n const needsPromptConfig"));
|
||||||
check('sources.setup-affordances', 'manual and CSV setup affordances remain explicit and disabled by default', all(['Manual records', 'CSV import', 'CSV content is required', 'enabled:false', 'remains disabled'], token => `${html}\n${js}\n${css}`.includes(token)));
|
check('sources.setup-affordances', 'manual and CSV setup affordances remain explicit and disabled by default', all(['Manual records', 'CSV import', 'CSV content is required', 'enabled:false', 'remains disabled'], token => `${html}\n${js}\n${css}`.includes(token)));
|
||||||
check('discovery.operator-controls', 'discovery builder and run controls are represented', all(['data-run-action="pause"', 'data-run-action="resume"', 'data-run-action="cancel"', 'live-log', 'source-health', 'daily_limit', 'source_ids', 'schedule'], token => `${html}\n${js}\n${css}`.includes(token)));
|
check('discovery.operator-controls', 'discovery builder and run controls are represented', all(['data-run-action="pause"', 'data-run-action="resume"', 'data-run-action="cancel"', 'live-log', 'source-health', 'daily_limit', 'source_ids', 'schedule'], token => `${html}\n${js}\n${css}`.includes(token)));
|
||||||
check('prospects.filter-contract', 'prospect explorer exposes source, geography, category, and contact filters', all(['sourceFilter', 'geographyFilter', 'categoryFilter', 'contactStatusFilter', 'contact_status'], token => `${html}\n${js}\n${css}`.includes(token)));
|
check('prospects.filter-contract', 'prospect explorer exposes source, geography, category, and contact filters', all(['sourceFilter', 'geographyFilter', 'categoryFilter', 'contactStatusFilter', 'contact_status'], token => `${html}\n${js}\n${css}`.includes(token)));
|
||||||
|
|||||||
Reference in New Issue
Block a user