Phase 5: Frontend - Use key as primary series identifier
- Updated app.js to use 'key' as primary series identifier - selectedSeries Set now uses key instead of folder - createSerieCard() uses data-key attribute for identification - toggleSerieSelection() uses key for lookups - downloadSelected() iterates with key values - updateSelectionUI() and toggleSelectAll() use key - Updated WebSocket service tests - Tests now include key and folder in broadcast data - Verified both fields are included in messages - No changes needed for queue.js and other JS files - They use download item IDs correctly, not series identifiers - No template changes needed - Series cards rendered dynamically in app.js All 996 tests passing
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
"keep_days": 30
|
||||
},
|
||||
"other": {
|
||||
"master_password_hash": "$pbkdf2-sha256$29000$MwYgpBTCmPM.JwQgRGhtDQ$GbltEa61jWLom23mXGi7psyZ4haHuXM6MRB5wl4CCU4",
|
||||
"master_password_hash": "$pbkdf2-sha256$29000$jxGC8F7LOYcwZoyR0rpX6g$b4wXlUToBG0KgOj/3Sbez0J57hA84RhtsMnepsqBRb0",
|
||||
"anime_directory": "/mnt/server/serien/Serien/"
|
||||
},
|
||||
"version": "1.0.0"
|
||||
|
||||
24
data/config_backups/config_backup_20251128_161248.json
Normal file
24
data/config_backups/config_backup_20251128_161248.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Aniworld",
|
||||
"data_dir": "data",
|
||||
"scheduler": {
|
||||
"enabled": true,
|
||||
"interval_minutes": 60
|
||||
},
|
||||
"logging": {
|
||||
"level": "INFO",
|
||||
"file": null,
|
||||
"max_bytes": null,
|
||||
"backup_count": 3
|
||||
},
|
||||
"backup": {
|
||||
"enabled": false,
|
||||
"path": "data/backups",
|
||||
"keep_days": 30
|
||||
},
|
||||
"other": {
|
||||
"master_password_hash": "$pbkdf2-sha256$29000$VCqllLL2vldKyTmHkJIyZg$jNllpzlpENdgCslmS.tG.PGxRZ9pUnrqFEQFveDEcYk",
|
||||
"anime_directory": "/mnt/server/serien/Serien/"
|
||||
},
|
||||
"version": "1.0.0"
|
||||
}
|
||||
24
data/config_backups/config_backup_20251128_161448.json
Normal file
24
data/config_backups/config_backup_20251128_161448.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Aniworld",
|
||||
"data_dir": "data",
|
||||
"scheduler": {
|
||||
"enabled": true,
|
||||
"interval_minutes": 60
|
||||
},
|
||||
"logging": {
|
||||
"level": "INFO",
|
||||
"file": null,
|
||||
"max_bytes": null,
|
||||
"backup_count": 3
|
||||
},
|
||||
"backup": {
|
||||
"enabled": false,
|
||||
"path": "data/backups",
|
||||
"keep_days": 30
|
||||
},
|
||||
"other": {
|
||||
"master_password_hash": "$pbkdf2-sha256$29000$3/t/7733PkdoTckZQyildA$Nz9SdX2ZgqBwyzhQ9FGNcnzG1X.TW9oce3sDxJbVSdY",
|
||||
"anime_directory": "/mnt/server/serien/Serien/"
|
||||
},
|
||||
"version": "1.0.0"
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"pending": [
|
||||
{
|
||||
"id": "4900cd26-5702-44fc-b575-5111193a274f",
|
||||
"id": "304d3273-8b1c-4847-8dc8-a8c585d720c0",
|
||||
"serie_id": "test-series-2",
|
||||
"serie_folder": "Another Series (2024)",
|
||||
"serie_name": "Another Series",
|
||||
@@ -12,7 +12,7 @@
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "HIGH",
|
||||
"added_at": "2025-11-28T14:58:37.173276Z",
|
||||
"added_at": "2025-11-28T15:14:50.916177Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
@@ -21,7 +21,7 @@
|
||||
"source_url": null
|
||||
},
|
||||
{
|
||||
"id": "991f6985-1896-420c-8e28-675044bf9da3",
|
||||
"id": "4ec82ed2-ad64-4330-bea5-3c986e577fa8",
|
||||
"serie_id": "series-high",
|
||||
"serie_folder": "Series High (2024)",
|
||||
"serie_name": "Series High",
|
||||
@@ -32,7 +32,7 @@
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "HIGH",
|
||||
"added_at": "2025-11-28T14:58:37.214713Z",
|
||||
"added_at": "2025-11-28T15:14:50.955809Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
@@ -41,7 +41,7 @@
|
||||
"source_url": null
|
||||
},
|
||||
{
|
||||
"id": "1d2c34fe-9f91-4614-a733-fd4e5ffbc451",
|
||||
"id": "9f089050-5128-439b-969e-541c3c6b7283",
|
||||
"serie_id": "series-normal",
|
||||
"serie_folder": "Series Normal (2024)",
|
||||
"serie_name": "Series Normal",
|
||||
@@ -52,7 +52,7 @@
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "NORMAL",
|
||||
"added_at": "2025-11-28T14:58:37.216943Z",
|
||||
"added_at": "2025-11-28T15:14:50.958134Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
@@ -61,7 +61,7 @@
|
||||
"source_url": null
|
||||
},
|
||||
{
|
||||
"id": "2eeb36cd-50ba-4e49-92c1-8f9385d9d0f9",
|
||||
"id": "0924064d-8588-45dd-9735-ac5ed2225360",
|
||||
"serie_id": "series-low",
|
||||
"serie_folder": "Series Low (2024)",
|
||||
"serie_name": "Series Low",
|
||||
@@ -72,7 +72,7 @@
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "LOW",
|
||||
"added_at": "2025-11-28T14:58:37.218979Z",
|
||||
"added_at": "2025-11-28T15:14:50.960059Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
@@ -81,7 +81,7 @@
|
||||
"source_url": null
|
||||
},
|
||||
{
|
||||
"id": "c42241f8-6ffb-4ee4-bcfa-f4e388cdd8cf",
|
||||
"id": "b34582b3-3d3c-4883-b95f-63287b6df397",
|
||||
"serie_id": "test-series",
|
||||
"serie_folder": "Test Series (2024)",
|
||||
"serie_name": "Test Series",
|
||||
@@ -92,7 +92,7 @@
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "NORMAL",
|
||||
"added_at": "2025-11-28T14:58:37.399213Z",
|
||||
"added_at": "2025-11-28T15:14:51.136578Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
@@ -101,7 +101,7 @@
|
||||
"source_url": null
|
||||
},
|
||||
{
|
||||
"id": "728a5592-0b82-4ce5-a34f-7a9c390053dc",
|
||||
"id": "2221eecf-e250-4f26-8e17-79b81db379bd",
|
||||
"serie_id": "test-series",
|
||||
"serie_folder": "Test Series (2024)",
|
||||
"serie_name": "Test Series",
|
||||
@@ -112,7 +112,7 @@
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "NORMAL",
|
||||
"added_at": "2025-11-28T14:58:37.467671Z",
|
||||
"added_at": "2025-11-28T15:14:51.204136Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
@@ -121,7 +121,7 @@
|
||||
"source_url": null
|
||||
},
|
||||
{
|
||||
"id": "d64df138-b5b2-447a-a310-fde41a4607c8",
|
||||
"id": "ab779cf6-3cd5-49ca-852b-a490b61dce99",
|
||||
"serie_id": "invalid-series",
|
||||
"serie_folder": "Invalid Series (2024)",
|
||||
"serie_name": "Invalid Series",
|
||||
@@ -132,7 +132,7 @@
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "NORMAL",
|
||||
"added_at": "2025-11-28T14:58:37.540908Z",
|
||||
"added_at": "2025-11-28T15:14:51.272632Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
@@ -141,7 +141,7 @@
|
||||
"source_url": null
|
||||
},
|
||||
{
|
||||
"id": "c87bb473-6b35-4f81-a0a8-7eec1e23756a",
|
||||
"id": "ecc12f47-9e1a-4cd3-a39d-df4ccd81baf4",
|
||||
"serie_id": "test-series",
|
||||
"serie_folder": "Test Series (2024)",
|
||||
"serie_name": "Test Series",
|
||||
@@ -152,7 +152,7 @@
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "NORMAL",
|
||||
"added_at": "2025-11-28T14:58:37.578395Z",
|
||||
"added_at": "2025-11-28T15:14:51.305672Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
@@ -161,67 +161,7 @@
|
||||
"source_url": null
|
||||
},
|
||||
{
|
||||
"id": "babab810-6c34-4a87-aec5-f8848645f57f",
|
||||
"serie_id": "series-4",
|
||||
"serie_folder": "Series 4 (2024)",
|
||||
"serie_name": "Series 4",
|
||||
"episode": {
|
||||
"season": 1,
|
||||
"episode": 1,
|
||||
"title": null
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "NORMAL",
|
||||
"added_at": "2025-11-28T14:58:37.674390Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
"error": null,
|
||||
"retry_count": 0,
|
||||
"source_url": null
|
||||
},
|
||||
{
|
||||
"id": "4da2b237-ab58-4312-a322-09d28f3ba0ec",
|
||||
"serie_id": "series-2",
|
||||
"serie_folder": "Series 2 (2024)",
|
||||
"serie_name": "Series 2",
|
||||
"episode": {
|
||||
"season": 1,
|
||||
"episode": 1,
|
||||
"title": null
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "NORMAL",
|
||||
"added_at": "2025-11-28T14:58:37.675597Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
"error": null,
|
||||
"retry_count": 0,
|
||||
"source_url": null
|
||||
},
|
||||
{
|
||||
"id": "d2ad485b-6f44-4738-8cba-ef9be5ef6853",
|
||||
"serie_id": "series-0",
|
||||
"serie_folder": "Series 0 (2024)",
|
||||
"serie_name": "Series 0",
|
||||
"episode": {
|
||||
"season": 1,
|
||||
"episode": 1,
|
||||
"title": null
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "NORMAL",
|
||||
"added_at": "2025-11-28T14:58:37.677593Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
"error": null,
|
||||
"retry_count": 0,
|
||||
"source_url": null
|
||||
},
|
||||
{
|
||||
"id": "d44e3def-5e49-47c9-accb-c662712f3b5d",
|
||||
"id": "109163ee-d2ce-48bb-81b3-5f6b604506e7",
|
||||
"serie_id": "series-1",
|
||||
"serie_folder": "Series 1 (2024)",
|
||||
"serie_name": "Series 1",
|
||||
@@ -232,7 +172,7 @@
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "NORMAL",
|
||||
"added_at": "2025-11-28T14:58:37.678299Z",
|
||||
"added_at": "2025-11-28T15:14:51.399391Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
@@ -241,7 +181,27 @@
|
||||
"source_url": null
|
||||
},
|
||||
{
|
||||
"id": "d8ddb373-d20e-456e-a836-31991a9e3e90",
|
||||
"id": "8ebd2676-0069-43a7-bee1-ed291a0ae334",
|
||||
"serie_id": "series-4",
|
||||
"serie_folder": "Series 4 (2024)",
|
||||
"serie_name": "Series 4",
|
||||
"episode": {
|
||||
"season": 1,
|
||||
"episode": 1,
|
||||
"title": null
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "NORMAL",
|
||||
"added_at": "2025-11-28T15:14:51.400954Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
"error": null,
|
||||
"retry_count": 0,
|
||||
"source_url": null
|
||||
},
|
||||
{
|
||||
"id": "f1d8efe4-a682-4ef1-b7a5-e1b954b622be",
|
||||
"serie_id": "series-3",
|
||||
"serie_folder": "Series 3 (2024)",
|
||||
"serie_name": "Series 3",
|
||||
@@ -252,7 +212,7 @@
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "NORMAL",
|
||||
"added_at": "2025-11-28T14:58:37.678964Z",
|
||||
"added_at": "2025-11-28T15:14:51.401591Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
@@ -261,7 +221,47 @@
|
||||
"source_url": null
|
||||
},
|
||||
{
|
||||
"id": "7cdbc2b6-0d5c-48fc-8a02-0b6b4d4275dd",
|
||||
"id": "18f8392a-d0ad-4b5d-8a2b-f634fd642c71",
|
||||
"serie_id": "series-2",
|
||||
"serie_folder": "Series 2 (2024)",
|
||||
"serie_name": "Series 2",
|
||||
"episode": {
|
||||
"season": 1,
|
||||
"episode": 1,
|
||||
"title": null
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "NORMAL",
|
||||
"added_at": "2025-11-28T15:14:51.402182Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
"error": null,
|
||||
"retry_count": 0,
|
||||
"source_url": null
|
||||
},
|
||||
{
|
||||
"id": "b394f1b2-691a-4be0-83f1-b5dc49e67c02",
|
||||
"serie_id": "series-0",
|
||||
"serie_folder": "Series 0 (2024)",
|
||||
"serie_name": "Series 0",
|
||||
"episode": {
|
||||
"season": 1,
|
||||
"episode": 1,
|
||||
"title": null
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "NORMAL",
|
||||
"added_at": "2025-11-28T15:14:51.403030Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
"error": null,
|
||||
"retry_count": 0,
|
||||
"source_url": null
|
||||
},
|
||||
{
|
||||
"id": "ee8b4416-772b-4ab7-b8af-8a695a723fe3",
|
||||
"serie_id": "persistent-series",
|
||||
"serie_folder": "Persistent Series (2024)",
|
||||
"serie_name": "Persistent Series",
|
||||
@@ -272,7 +272,7 @@
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "NORMAL",
|
||||
"added_at": "2025-11-28T14:58:37.765201Z",
|
||||
"added_at": "2025-11-28T15:14:51.493134Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
@@ -281,7 +281,7 @@
|
||||
"source_url": null
|
||||
},
|
||||
{
|
||||
"id": "1b5f11b3-26d3-43ea-9615-8f951dc09bac",
|
||||
"id": "8ee3de44-7260-4e26-88ee-8172e45d14dd",
|
||||
"serie_id": "ws-series",
|
||||
"serie_folder": "WebSocket Series (2024)",
|
||||
"serie_name": "WebSocket Series",
|
||||
@@ -292,7 +292,7 @@
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "NORMAL",
|
||||
"added_at": "2025-11-28T14:58:37.835647Z",
|
||||
"added_at": "2025-11-28T15:14:51.573256Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
@@ -301,7 +301,7 @@
|
||||
"source_url": null
|
||||
},
|
||||
{
|
||||
"id": "72a71e8e-3a06-4d81-896e-d5c11956cb12",
|
||||
"id": "ec7f80b1-87c1-4cf4-949b-c96d6dd7a82b",
|
||||
"serie_id": "workflow-series",
|
||||
"serie_folder": "Workflow Test Series (2024)",
|
||||
"serie_name": "Workflow Test Series",
|
||||
@@ -312,7 +312,7 @@
|
||||
},
|
||||
"status": "pending",
|
||||
"priority": "HIGH",
|
||||
"added_at": "2025-11-28T14:58:37.870997Z",
|
||||
"added_at": "2025-11-28T15:14:51.610620Z",
|
||||
"started_at": null,
|
||||
"completed_at": null,
|
||||
"progress": null,
|
||||
@@ -323,5 +323,5 @@
|
||||
],
|
||||
"active": [],
|
||||
"failed": [],
|
||||
"timestamp": "2025-11-28T14:58:37.880117+00:00"
|
||||
"timestamp": "2025-11-28T15:14:51.618568+00:00"
|
||||
}
|
||||
Reference in New Issue
Block a user