docs(system): number the Sources states deviation D128

This commit is contained in:
Vito Sansevero
2026-10-23 12:59:16 -07:00
parent ee091a26c7
commit 7885433688
7 changed files with 12 additions and 12 deletions
+2 -2
View File
@@ -2006,7 +2006,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–D66 and D81 renumbered D92–D98 and D113; D121–D127 assigned; D-NEW-S4-2 awaits its number):
Recorded deviations (plan D60–D66 and D81 renumbered D92–D98 and D113; D121–D128 assigned):
- **D92** (shell): no "Sample configuration" chip. The Save status is truthful: "No
unsaved changes.", "Unsaved changes.", "Saved in this browser." / "Saved to the server
@@ -2102,7 +2102,7 @@ Recorded deviations (plan D60–D66 and D81 renumbered D92–D98 and D113; D121
again."; neither adds anything.
The concept dialog does no check, so `invalid source shows the server reason`
(workspace-system-sources.spec) pins it.
- **D-NEW-S4-2** (Sources): states the concept's sample rows never show. A source the
- **D128** (Sources): states the concept's sample rows never show. A source the
running monitor still watches after "Watch for new outputs" was saved off reads
"<path> · watching until restart" (still "Scan changes"), and the save's status adds
"Restart ComfyUI to apply: Watch for new outputs." from `restart_required_fields`. A
+1 -1
View File
@@ -584,7 +584,7 @@ function measureSources(mainSelector) {
};
}
// D-NEW-S4-2: "watching until restart" after monitoring was switched off while the observer still runs.
// D128: "watching until restart" after monitoring was switched off while the observer still runs.
const WATCH_TEXT = { watching: 'watching', stopping: 'watching until restart', manual: 'manual scan', restart_pending: 'restart pending' };
const WATCHED = new Set(['watching', 'stopping']);
// D98: the operation Sources adds after the concept's own, as production renders it.
@@ -255,7 +255,7 @@ test('Watch for new outputs saves monitoring_enabled; a restart applies it', asy
await saveButton(page).click();
const answer = await (await saved).json();
expect(answer.restart_required_fields).toEqual(['monitoring_enabled']);
// D-NEW-S4-2: saved for the next start, and the status says a restart applies it.
// D128: saved for the next start, and the status says a restart applies it.
await expect(statusOf(page)).toHaveText('Saved to the server configuration. Restart ComfyUI to apply: Watch for new outputs.');
// The running observer keeps watching until ComfyUI restarts, and the list says so.
const { settings, monitor } = await serverJson(request, SETTINGS_URL);
+2 -2
View File
@@ -126,7 +126,7 @@ test('Refresh files toasts the rescan counts, or says it finished when they are
assert.equal(refreshedText(null), 'Files refreshed.');
});
test('monitoring switched off: a source still watched says so until the restart (D-NEW-S4-2)', async () => {
test('monitoring switched off: a source still watched says so until the restart (D128)', async () => {
const { sourceRows } = await sourcesModule;
const sources = { ...STATUS, effective: [{ ...STATUS.effective[0], watch: 'stopping' }, STATUS.effective[1]] };
const { rows } = sourceRows({ sources, saved: ['output', 'input'], current: ['output', 'input'] });
@@ -134,7 +134,7 @@ test('monitoring switched off: a source still watched says so until the restart
[['output · watching until restart', 'Scan changes'], ['input · manual scan', 'Scan folder']]);
});
test('a valid configured source missing from the effective list is another spelling of a listed folder (D-NEW-S4-2)', async () => {
test('a valid configured source missing from the effective list is another spelling of a listed folder (D128)', async () => {
const { sourceRows, DUPLICATE_SOURCE } = await sourcesModule;
assert.equal(DUPLICATE_SOURCE, 'same folder as another source');
const sources = { ...STATUS, configured: [...STATUS.configured,
+1 -1
View File
@@ -318,7 +318,7 @@ test('host read state says whether the server settings could be read', async ()
assert.equal(drafts.hostState(), 'loaded');
});
test('a host save names the settings that apply after a restart (D-NEW-S4-2)', async () => {
test('a host save names the settings that apply after a restart (D128)', async () => {
const { statusText, RESTART_LABELS } = await source;
assert.deepEqual(RESTART_LABELS, { monitoring_enabled: 'Watch for new outputs' });
const saved = { browser: 'clean', host: 'saved', runtime: 'clean' };
+2 -2
View File
@@ -21,7 +21,7 @@
* ComfyUI's output folder is used instead; "restart pending" for a source the running monitor does not watch yet; the
* "Refresh files" operation (`/gallery/rescan`) closes the surface. D127: the add dialog's field is "Folder path",
* starts empty and says the server's reason in place; its action is "Add", and Enter adds too.
* D-NEW-S4-2: "watching until restart" for a source the running monitor still watches after monitoring was switched off;
* D128: "watching until restart" for a source the running monitor still watches after monitoring was switched off;
* "same folder as another source" for a configured source the effective list already holds under another spelling; a
* save refused for one source (`invalid-source`) marks that row and the status says the server's reason.
*/
@@ -306,7 +306,7 @@ export function mountSources(container, { api, activity, scope, drafts, notify =
actions.push(remove);
}
const node = el('div', undefined, 'operation');
// D-NEW-S4-2: the source the last save was refused for; the status says why.
// D128: the source the last save was refused for; the status says why.
if (row.remove !== null && row.remove === drafts.invalidSource?.()) node.setAttribute('aria-invalid', 'true');
const text = el('div');
text.append(el('h3', row.title), el('p', row.description));
+3 -3
View File
@@ -34,11 +34,11 @@ export const SETTINGS_STATUS = Object.freeze({
partial: 'Some changes were not saved. Review the highlighted settings.',
tabOnly: 'Saved for this tab only; browser storage is unavailable.',
conflict: 'Settings changed elsewhere. Reload this section to see them.',
// D-NEW-S4-2: a saved setting the running server applies only after a restart.
// D128: a saved setting the running server applies only after a restart.
restart: 'Restart ComfyUI to apply:',
});
/** D-NEW-S4-2: the settings a host save can report in `restart_required_fields`, by their row label. */
/** D128: the settings a host save can report in `restart_required_fields`, by their row label. */
export const RESTART_LABELS = Object.freeze({ monitoring_enabled: 'Watch for new outputs' });
export const DRAFT_DOMAINS = Object.freeze(['browser', 'host', 'runtime']);
@@ -49,7 +49,7 @@ const ADAPTERS = ['readBrowser', 'readHost', 'readRuntime', 'writeBrowser', 'wri
/**
* The status copy of one `save()` outcome (`{browser, host, runtime}`, each clean/saved/tab-only/applied/failed/conflict).
* `restart` lists the host fields the server applies at its next start, `invalid` the source a refused host save named
* (`{source, message}`): its message is the status (D-NEW-S4-2).
* (`{source, message}`): its message is the status (D128).
*/
export function statusText(outcome) {
const results = DRAFT_DOMAINS.map(domain => outcome?.[domain]);