diff --git a/TESTING.md b/TESTING.md index 617d8cd1..9a862805 100644 --- a/TESTING.md +++ b/TESTING.md @@ -3174,7 +3174,7 @@ the legacy admin page's key); Later dismisses it without scanning, and Review sc dismisses it as the legacy Scan does. "+ Add source" asks validate-source, then adds the folder to the host draft of `gallery_root_paths`; Remove takes one out; "Watch for new outputs" (`monitoring_enabled`), "Save prompts from other workflows" -(`save_foreign_runs`, D147) and Worker threads (`worker_threads`) are host +(`save_foreign_runs`, D158) and Worker threads (`worker_threads`) are host drafts too, and Save writes them with the revision. A save the server refuses because a scan runs toasts "Another job is running: ." with a link to that job (D57) and keeps the drafts; a save refused for one source says the server's message as the status @@ -3423,7 +3423,7 @@ the connection's `total_changes` is 0 at close and the data reads back unchanged `-shm` bytes are not compared: every WAL reader rewrites its read marks there, so no reader can keep it byte-identical (`test_health_check_never_writes`). -Recorded deviations (plan D60–D75, D79–D82 renumbered D92–D107, D109–D110 and D111–D114; D121–D134 and D147 assigned). D94, +Recorded deviations (plan D60–D75, D79–D82 renumbered D92–D107, D109–D110 and D111–D114; D121–D134 and D158 assigned). D94, the per-section hand-off panel, was retired by S12 (#329): every section is native. - **D92** (shell): no "Sample configuration" chip. The Save status is truthful: "No @@ -3911,7 +3911,7 @@ the per-section hand-off panel, was retired by S12 (#329): every section is nati Cancel-only review matches the concept review shell` (system-tagging-concept.spec) and the batch tests of workspace-system-tagging.spec; the mutation check renames each grid label in turn. -- **D147** (Sources, #247 D-Q4): the concept has no switch for prompts from workflows +- **D158** (Sources, #247 D-Q4): the concept has no switch for prompts from workflows without a PromptManager node; the maintainer chose a visible switch over a config key. A `.setting-row` in the concept's toggle markup follows "Watch for new outputs": "Save prompts from other workflows" (`#foreign-runs`, host key `save_foreign_runs`, @@ -3927,9 +3927,9 @@ the per-section hand-off panel, was retired by S12 (#329): every section is nati observer does. Pinned by `sources matches the concept` (the mapping inserts the row after the monitoring row), `sources comparison detects mutations` (a missing row and a changed - label are caught), `D147: Save prompts from other workflows saves save_foreign_runs + label are caught), `D158: Save prompts from other workflows saves save_foreign_runs live; off while monitoring is off (#247)` (keyboard on desktop, a tap on touch) and - `D147: saved off while the monitor still watches until a restart, the foreign row can + `D158: saved off while the monitor still watches until a restart, the foreign row can still be set (D128)` (workspace-system-sources.spec) and the system-sources node test. - **D109** (Logs, S12, #329): the concept's Logs surface on the live server. The toolbar keeps "Level", Refresh and the download (renamed "Download log": the active log, @@ -5900,7 +5900,7 @@ handler's `_ingest_foreign`, `_recheck_foreign`, `_store_foreign`): settle, at the re-check and again just before the store, together with `MONITORING_ENABLED`: either saved off stops foreign writes at once (the running observer watches until a restart, D128); off logs "No PromptManager prompt in - workflow, skipping image" as before. System › Sources & scans "Save prompts from other workflows" (D147) + workflow, skipping image" as before. System › Sources & scans "Save prompts from other workflows" (D158) saves it through `POST /prompt_manager/settings` with no restart field; the diagnostics report lists it. diff --git a/tests/browser/system-concept.spec.mjs b/tests/browser/system-concept.spec.mjs index bfad38c1..a340898f 100644 --- a/tests/browser/system-concept.spec.mjs +++ b/tests/browser/system-concept.spec.mjs @@ -614,11 +614,11 @@ const WATCHED = new Set(['watching', 'stopping']); const REFRESH_FILES = { title: 'Refresh files', description: 'Read every source again to find files added or removed outside ComfyUI.', label: 'Refresh' }; -// D147 (#247): the row production adds directly below "Watch for new outputs", in that row's markup. +// D158 (#247): the row production adds directly below "Watch for new outputs", in that row's markup. const FOREIGN_RUNS = { id: 'foreign-runs', label: 'Save prompts from other workflows', description: 'New outputs of workflows without a PromptManager node add their prompt to the library when it is certain.' }; -/** D147: the concept's "Watch for new outputs" row as the inserted "Save prompts from other workflows" row. */ +/** D158: the concept's "Watch for new outputs" row as the inserted "Save prompts from other workflows" row. */ function foreignRunsRow(monitoringRow, settings) { return { ...monitoringRow, text: [['label', FOREIGN_RUNS.label, FOREIGN_RUNS.id], ['p', FOREIGN_RUNS.description, null]], control: { ...monitoringRow.control, id: FOREIGN_RUNS.id, checked: settings.save_foreign_runs } }; @@ -642,7 +642,7 @@ function mapSourcesConcept(reference, { settings, sources }) { // D113: the range ends at the server's core count (the concept's fixed 16) and shows the real worker count. return [{ ...row, control: { ...row.control, max: String(settings.cpu_count), value: String(settings.worker_threads) } }]; }), - // D147: the inserted row after the first setting row; D98: "Refresh files" closes the surface. + // D158: the inserted row after the first setting row; D98: "Refresh files" closes the surface. surface: { ...reference.surface, tree: [...reference.surface.tree.slice(0, rowAt + 1), 'div.setting-row', ...reference.surface.tree.slice(rowAt + 1), 'div.operation'] }, operations: [...reference.operations, { ...reference.operations[0], title: REFRESH_FILES.title, @@ -698,7 +698,7 @@ test('sources comparison detects mutations', async ({ page, request }) => { const expected = mapSourcesConcept(concept, server); const production = await productionSources(page, 'dark', { notice: true }); expect(diffInventory(expected, production)).toEqual([]); - // Unmapped, the concept differs only in the real sources, the D98 operation, the D147 row (which moves the D113 + // Unmapped, the concept differs only in the real sources, the D98 operation, the D158 row (which moves the D113 // range to the third row) and the D113 range. expect(diffInventory(concept, production).map(item => item.path.split('.').slice(0, 2).join('.')) .filter((path, index, all) => all.indexOf(path) === index).sort()) @@ -717,7 +717,7 @@ test('sources comparison detects mutations', async ({ page, request }) => { await page.evaluate(() => { document.querySelector('#workspace-main label[for="monitoring"]').textContent = 'Watch for outputs'; }); expect(await paths()).toEqual(['rows.0.text.0.1']); await page.evaluate(() => { document.querySelector('#workspace-main label[for="monitoring"]').textContent = 'Watch for new outputs'; }); - // D147: the inserted row is compared too: a missing one and a changed label are caught. + // D158: the inserted row is compared too: a missing one and a changed label are caught. const undoForeign = await mutate(page, { remove: ['#workspace-main .setting-row:has(#foreign-runs)'] }); expect(await paths()).toEqual(expect.arrayContaining(['rows.length', 'surface.tree.length'])); await undoForeign(); diff --git a/tests/browser/workspace-system-sources.spec.mjs b/tests/browser/workspace-system-sources.spec.mjs index b785a5b3..74097aa3 100644 --- a/tests/browser/workspace-system-sources.spec.mjs +++ b/tests/browser/workspace-system-sources.spec.mjs @@ -268,7 +268,7 @@ test('Watch for new outputs saves monitoring_enabled; a restart applies it', asy await expect(sourceList(page).locator('.operation p')).toHaveText(['output · watching', 'input · watching']); }); -test('D147: Save prompts from other workflows saves save_foreign_runs live; off while monitoring is off (#247)', async ({ page, request }, testInfo) => { +test('D158: Save prompts from other workflows saves save_foreign_runs live; off while monitoring is off (#247)', async ({ page, request }, testInfo) => { try { const layout = await openSources(page); const rows = layout.locator('section.surface > .setting-row'); @@ -312,7 +312,7 @@ test('D147: Save prompts from other workflows saves save_foreign_runs live; off } }); -test('D147: saved off while the monitor still watches until a restart, the foreign row can still be set (D128)', async ({ page, request }) => { +test('D158: saved off while the monitor still watches until a restart, the foreign row can still be set (D128)', async ({ page, request }) => { await expect(await request.post('/__test__/system/monitor', { data: { watching: ['output', 'input'] } })).toBeOK(); try { const layout = await openSources(page); diff --git a/tests/js/workspace-system-sources.test.js b/tests/js/workspace-system-sources.test.js index 8aa973ed..81719d44 100644 --- a/tests/js/workspace-system-sources.test.js +++ b/tests/js/workspace-system-sources.test.js @@ -158,7 +158,7 @@ test('a valid configured source missing from the effective list is another spell description: 'output/. · same folder as another source', scan: null, remove: 'output/.' }); }); -test('D147: "Save prompts from other workflows" drafts save_foreign_runs, disabled while monitoring is off (#247)', async () => { +test('D158: "Save prompts from other workflows" drafts save_foreign_runs, disabled while monitoring is off (#247)', async () => { const { FOREIGN_RUNS, foreignRunsState } = await sourcesModule; assert.deepEqual(FOREIGN_RUNS, { id: 'foreign-runs', key: 'save_foreign_runs', label: 'Save prompts from other workflows', description: 'New outputs of workflows without a PromptManager node add their prompt to the library when it is certain.', diff --git a/web/js/workspace/system-sources.mjs b/web/js/workspace/system-sources.mjs index 29f9f567..6afb437e 100644 --- a/web/js/workspace/system-sources.mjs +++ b/web/js/workspace/system-sources.mjs @@ -14,7 +14,7 @@ * it to the host draft of `gallery_root_paths`; Remove takes one out. Both wait for the one Save row. * - "Watch for new outputs" (`monitoring_enabled`) and "Worker threads" (`worker_threads`, a range up to the server's * `cpu_count`, D113) are host drafts too. "Enrich existing metadata" reviews a scan of every source. - * - D147 (#247): "Save prompts from other workflows" (`save_foreign_runs`), a host draft below "Watch for new outputs", + * - D158 (#247): "Save prompts from other workflows" (`save_foreign_runs`), a host draft below "Watch for new outputs", * applied by the server at once (the monitor reads it for every file); disabled, saying why, while monitoring is off, * unless the running monitor still watches until a restart (D128 `stopping`): then it can still be set. * - "Thumbnail generation → Review options" opens "Thumbnail maintenance" (thumbnail-review.mjs, S5 Task 14), which @@ -66,13 +66,13 @@ export const LOAD_FAILED_TEXT = 'Sources could not be loaded. Your saved data ha export const DUPLICATE_TEXT = 'This folder is already a source.'; export const VALIDATE_FAILED_TEXT = 'The folder could not be checked. Try again.'; export const REFRESH_FAILED_TEXT = 'Files could not be refreshed. Try again.'; -/** D147 (#247): the row the concept does not draw, below "Watch for new outputs". */ +/** D158 (#247): the row the concept does not draw, below "Watch for new outputs". */ export const FOREIGN_RUNS = Object.freeze({ id: 'foreign-runs', key: 'save_foreign_runs', label: 'Save prompts from other workflows', description: 'New outputs of workflows without a PromptManager node add their prompt to the library when it is certain.', off: 'Applies while Watch for new outputs is on.' }); /** - * D147: the row for the drafted `save_foreign_runs` (`value`) and `monitoring_enabled` (`monitoring`): disabled until + * D158: the row for the drafted `save_foreign_runs` (`value`) and `monitoring_enabled` (`monitoring`): disabled until * read, and while monitoring is off, when `note` says why (the value is kept and saved as it is). `stopping`: a source * is still watched until the restart (D128), so the value can still be set; the note stays. */ @@ -385,7 +385,7 @@ export function mountSources(container, { api, activity, scope, drafts, notify = } } - // D147: disabled while monitoring is drafted off, with the reason under the description. + // D158: disabled while monitoring is drafted off, with the reason under the description. function paintForeign(row, value, unavailable) { const stopping = sources?.effective?.some(source => source.watch === 'stopping') === true; const state = foreignRunsState({ value, monitoring: drafts.get('host', 'monitoring_enabled'), stopping });