{ "name": "download.list \u2014 the main table, unfinished first page", "description": "Filtering, sorting and paging all happen daemon-side; the GUI never materializes rows it will not draw.", "request": { "jsonrpc": "2.0", "id": 13, "method": "download.list", "params": { "filter": { "states": [ "downloading", "paused", "queued" ] }, "sort": { "field": "createdAt", "direction": "desc" }, "offset": 0, "limit": 50 } }, "response": { "jsonrpc": "2.0", "id": 13, "result": { "total": 4, "items": [ { "taskId": "3f7a2b1c-5d6e-4f80-9a1b-2c3d4e5f6071", "filename": "ubuntu-26.04-desktop-amd64.iso", "saveDir": "/home/sami/Downloads/Programs", "url": "https://releases.ubuntu.com/26.04/ubuntu-26.04-desktop-amd64.iso", "effectiveUrl": "https://releases.ubuntu.com/26.04/ubuntu-26.04-desktop-amd64.iso", "sizeBytes": 6228541440, "downloadedBytes": 2941190144, "state": "downloading", "speedBps": 29796556, "etaSeconds": 110, "resumable": true, "segments": 8, "categoryId": "programs", "queueId": null, "queuePosition": null, "description": null, "createdAt": "$isoDate", "lastTryAt": "$isoDate", "completedAt": null, "error": null }, { "taskId": "8c1d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f", "filename": "film.mkv", "saveDir": "/home/sami/Downloads/Video", "url": "https://example.org/film.mkv", "effectiveUrl": "https://example.org/film.mkv", "sizeBytes": 1503238553, "downloadedBytes": 402653184, "state": "paused", "speedBps": 0, "etaSeconds": null, "resumable": true, "segments": 4, "categoryId": "video", "queueId": null, "queuePosition": null, "description": null, "createdAt": "$isoDate", "lastTryAt": "$isoDate", "completedAt": null, "error": null } ] } }, "assertions": [ "total counts every row matching the filter, ignoring offset and limit", "the table is built from this once and maintained from events thereafter, never re-fetched per tick" ] }