From ddf10327c793c0cf6643ea405d51f49c2079e28f Mon Sep 17 00:00:00 2001 From: Lukas Date: Sun, 22 Feb 2026 17:42:01 +0100 Subject: [PATCH] Remove deprecated legacy interval field from setup and settings UI --- docs/ARCHITECTURE.md | 12 +++++----- docs/instructions.md | 2 -- src/server/web/static/js/index/main-config.js | 1 - .../web/static/js/index/scheduler-config.js | 6 +---- src/server/web/templates/index.html | 11 --------- src/server/web/templates/setup.html | 12 ---------- tests/frontend/e2e/settings_modal.spec.js | 24 ------------------- tests/frontend/e2e/setup_page.spec.js | 13 ---------- 8 files changed, 7 insertions(+), 74 deletions(-) diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 07752e0..fcd5e23 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -417,12 +417,12 @@ Source: [src/server/middleware/auth.py](../src/server/middleware/auth.py#L1-L209 #### Temp Directory Contract -| Situation | Outcome | -| --------- | ------- | -| Server start | Entire `./Temp/` directory is purged before any service initialises | -| Successful download | Temp file moved to destination, then removed from `./Temp/` | -| Failed download (provider error) | Temp + `.part` fragments removed by `_cleanup_temp_file()` | -| Exception / cancellation | Temp + `.part` fragments removed in `except` block | +| Situation | Outcome | +| -------------------------------- | ------------------------------------------------------------------- | +| Server start | Entire `./Temp/` directory is purged before any service initialises | +| Successful download | Temp file moved to destination, then removed from `./Temp/` | +| Failed download (provider error) | Temp + `.part` fragments removed by `_cleanup_temp_file()` | +| Exception / cancellation | Temp + `.part` fragments removed in `except` block | Source: [src/server/services/download_service.py](../src/server/services/download_service.py#L1-L150), [src/core/providers/aniworld_provider.py](../src/core/providers/aniworld_provider.py), diff --git a/docs/instructions.md b/docs/instructions.md index 4f98392..c50f8b1 100644 --- a/docs/instructions.md +++ b/docs/instructions.md @@ -121,5 +121,3 @@ For each task completed: --- -1. ✅ On each download make sure the Temp files are deleted. -2. ✅ on each server start clean Temp folder diff --git a/src/server/web/static/js/index/main-config.js b/src/server/web/static/js/index/main-config.js index a539d1f..3ff2ba5 100644 --- a/src/server/web/static/js/index/main-config.js +++ b/src/server/web/static/js/index/main-config.js @@ -144,7 +144,6 @@ AniWorld.MainConfig = (function() { // Populate scheduler settings document.getElementById('scheduled-rescan-enabled').checked = config.scheduler?.enabled || false; - document.getElementById('scheduled-rescan-interval').value = config.scheduler?.interval_minutes || 60; // Populate logging settings document.getElementById('log-level').value = config.logging?.level || 'INFO'; diff --git a/src/server/web/static/js/index/scheduler-config.js b/src/server/web/static/js/index/scheduler-config.js index acf6119..a4c07dc 100644 --- a/src/server/web/static/js/index/scheduler-config.js +++ b/src/server/web/static/js/index/scheduler-config.js @@ -82,16 +82,12 @@ AniWorld.SchedulerConfig = (function() { const autoDownloadEl = document.getElementById('auto-download-after-rescan'); const autoDownload = autoDownloadEl ? autoDownloadEl.checked : false; - const intervalEl = document.getElementById('scheduled-rescan-interval'); - const interval = intervalEl ? (parseInt(intervalEl.value) || 60) : 60; - // POST directly to the scheduler config endpoint const payload = { enabled: enabled, schedule_time: scheduleTime, schedule_days: scheduleDays, - auto_download_after_rescan: autoDownload, - interval_minutes: interval + auto_download_after_rescan: autoDownload }; const response = await AniWorld.ApiClient.post(API.SCHEDULER_CONFIG, payload); diff --git a/src/server/web/templates/index.html b/src/server/web/templates/index.html index 19eace7..8b64b8b 100644 --- a/src/server/web/templates/index.html +++ b/src/server/web/templates/index.html @@ -305,17 +305,6 @@ - -
- Advanced -
- - - - Deprecated: only used if cron scheduling is not configured - -
-
diff --git a/src/server/web/templates/setup.html b/src/server/web/templates/setup.html index d7c812d..b88b62d 100644 --- a/src/server/web/templates/setup.html +++ b/src/server/web/templates/setup.html @@ -480,17 +480,6 @@
-
- Advanced -
-
- - -
Deprecated: only used if cron scheduling is not configured.
-
-
-
@@ -772,7 +761,6 @@ scheduler_schedule_time: document.getElementById('scheduler_schedule_time').value || '03:00', scheduler_schedule_days: Array.from(document.querySelectorAll('.scheduler-day-setup-cb:checked')).map(cb => cb.value), scheduler_auto_download_after_rescan: document.getElementById('scheduler_auto_download').checked, - scheduler_interval_minutes: parseInt(document.getElementById('scheduler_interval_minutes').value) || 60, logging_level: document.getElementById('logging_level').value, logging_file: document.getElementById('logging_file').value.trim() || null, logging_max_bytes: document.getElementById('logging_max_bytes').value ? diff --git a/tests/frontend/e2e/settings_modal.spec.js b/tests/frontend/e2e/settings_modal.spec.js index e547580..56355c1 100644 --- a/tests/frontend/e2e/settings_modal.spec.js +++ b/tests/frontend/e2e/settings_modal.spec.js @@ -75,7 +75,6 @@ test.describe('Settings Modal - Configuration Sections', () => { test('should display scheduler configuration section', async ({ page }) => { await expect(page.locator('text=Scheduled Operations')).toBeVisible(); await expect(page.locator('#scheduled-rescan-enabled')).toBeVisible(); - await expect(page.locator('#scheduled-rescan-interval')).toBeVisible(); }); test('should display NFO settings section', async ({ page }) => { @@ -177,29 +176,6 @@ test.describe('Settings Modal - Edit Configuration', () => { expect(newState).not.toBe(initialState); }); - test('should allow editing scheduler interval', async ({ page }) => { - const intervalInput = page.locator('#scheduled-rescan-interval'); - - await intervalInput.clear(); - await intervalInput.fill('120'); - - const value = await intervalInput.inputValue(); - expect(value).toBe('120'); - }); - - test('should validate scheduler interval is positive', async ({ page }) => { - const intervalInput = page.locator('#scheduled-rescan-interval'); - - await intervalInput.clear(); - await intervalInput.fill('0'); - - // HTML5 validation should prevent this - const validationMessage = await intervalInput.evaluate( - (el: HTMLInputElement) => el.validationMessage - ); - expect(validationMessage).toBeTruthy(); - }); - test('should series count field be readonly', async ({ page }) => { const seriesCount = page.locator('#series-count-input'); diff --git a/tests/frontend/e2e/setup_page.spec.js b/tests/frontend/e2e/setup_page.spec.js index b2a82e6..33d7bab 100644 --- a/tests/frontend/e2e/setup_page.spec.js +++ b/tests/frontend/e2e/setup_page.spec.js @@ -108,16 +108,6 @@ test.describe('Setup Page - Form Validation', () => { expect(validationMessage).toBeTruthy(); }); - test('should validate scheduler interval is positive', async ({ page }) => { - const intervalInput = page.locator('#scheduler_interval_minutes'); - - await intervalInput.fill('0'); - - const validationMessage = await intervalInput.evaluate( - (el: HTMLInputElement) => el.validationMessage - ); - expect(validationMessage).toBeTruthy(); - }); }); test.describe('Setup Page - Password Strength Indicator', () => { @@ -239,14 +229,11 @@ test.describe('Setup Page - Configuration Sections', () => { test('should have scheduler settings with checkbox', async ({ page }) => { const enabledCheckbox = page.locator('#scheduler_enabled'); - const intervalInput = page.locator('#scheduler_interval_minutes'); await expect(enabledCheckbox).toBeVisible(); - await expect(intervalInput).toBeVisible(); // Should be enabled by default await expect(enabledCheckbox).toBeChecked(); - await expect(intervalInput).toHaveValue('60'); }); test('should allow toggling scheduler enabled', async ({ page }) => {