Skip to main content

Overview

The History page provides a centralized view of all your novel downloads, both completed and in-progress. It allows you to resume paused downloads, finalize incomplete EPUBs, and manage your download history.
History is different from Library. History tracks download jobs and their status, while Library shows completed EPUB files ready to read.

Key Features

Resume Downloads

Continue interrupted or paused downloads from where they left off

Search & Filter

Find downloads by title, author, or status

Status Tracking

Monitor progress with real-time chapter counts and status indicators

Early Finalization

Create EPUBs from partial downloads if you don’t need all chapters

Accessing History

Navigate to the History tab in the main navigation bar. The History page loads automatically and displays all download jobs from the backend.
Main Navigation → History Tab

Job Status Types

Downloads can have the following statuses:
StatusDescriptionActions Available
ProcessingCurrently downloading chaptersView progress, Stop
PausedDownload stopped by userResume, Delete, Finalize
CompletedEPUB successfully generatedView in Library, Delete
FailedDownload encountered an errorResume, Delete
The status is managed by the Python backend (/api/history) and automatically updates when you start, stop, or complete downloads.

Search and Filtering

The search bar at the top filters downloads by:
  • Novel title
  • Author name
  • Job ID (UUID)
// From History.jsx:48-53
const query = searchQuery.toLowerCase();
filtered = filtered.filter(novel =>
  novel.novel_name?.toLowerCase().includes(query) ||
  novel.author?.toLowerCase().includes(query) ||
  novel.id?.toLowerCase().includes(query)
);

Status Filter

Filter downloads by status using the dropdown:
  • All - Show everything
  • Processing - Active downloads only
  • Completed - Finished EPUBs
  • Paused - Stopped downloads

Sorting Options

Click column headers to sort by:
Sort ByDescription
DateWhen the download was created/updated (default)
TitleNovel name (alphabetical)
AuthorAuthor name (alphabetical)
ChaptersNumber of chapters downloaded
StatusJob status (alphabetical)
Click the same header again to toggle between ascending and descending order.
Use Date (Descending) to see your most recent downloads first. This is the default setting.

Resuming Downloads

When a download is paused or fails, you can resume it from the History page.
1

Locate the Paused Download

Find the novel in your History list. It will have a Paused or Failed status badge.
2

Click Resume

Click the Resume button (play icon). This triggers the IPC channel:
window.electronAPI.resumeScrape({
  job_id: id,
  novel_name: novel.novel_name,
  author: novel.author || "",
  start_url: novel.start_url || "",
  sourceId: novel.sourceId || 'generic',
  cover_data: novel.cover_data || ""
});
3

Redirect to Download Manager

You’ll be automatically redirected to the Download page where scraping continues from the last saved chapter.
Resuming a download uses the start_url saved in the backend. If this URL is no longer valid (e.g., the website changed its structure), the resume may fail.

Early Finalization

If you don’t need all chapters of a novel, you can finalize a paused download early.
1

Select a Paused Download

Find a download with Paused or Processing status.
2

Click Finalize

Click the Finalize button. A confirmation prompt appears:
“Create an EPUB with currently downloaded chapters? The job will be marked as Completed in your history.”
3

EPUB Generation

The frontend sends a POST request to /api/finalize-epub:
await fetch('http://127.0.0.1:8000/api/finalize-epub', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    job_id: id,
    novel_name: novel.novel_name,
    author: novel.author || "",
    cover_data: novel.cover_data || ""
  })
});
4

View in Library

Once finalized, the job status changes to Completed and the EPUB appears in your Library.
Use early finalization if:
  • The novel is no longer available online
  • You only want specific chapters
  • The download is stuck due to website changes

Deleting Downloads

Remove downloads from your history to clean up space.
1

Click Delete

Click the Delete (trash icon) button next to the download.
2

Confirm Deletion

Confirm the prompt: “Delete this novel from history?”
3

Cleanup

The frontend sends a DELETE request to /api/novel/{job_id}, which removes:
  • Job entry from jobs_history.json
  • Progress file ({job_id}_progress.jsonl)
  • Active scrape entry if paused
Deleting a download is permanent. If you haven’t finalized the EPUB, you’ll lose all downloaded chapters. Only delete after finalizing or if you no longer need the novel.

Refresh History

Click the Refresh button (circular arrow icon) to manually reload the history from the backend. This is useful if:
  • You’ve completed a download in another window
  • The status seems out of sync
  • You want to verify recent changes
// From History.jsx:133-137
const handleRefresh = async () => {
  setIsRefreshing(true);
  await fetchLibrary();
  setTimeout(() => setIsRefreshing(false), 500);
};

Clear Filters

If you’ve applied multiple filters and want to reset, click the Clear Filters button (X icon). This resets:
  • Search query to empty
  • Status filter to “All”
  • Sort to “Date (Descending)“

Progress Tracking

Each history entry displays:
FieldDescriptionSource
Novel TitleName of the novelnovel_name from backend
AuthorAuthor nameauthor field (optional)
Chapters DownloadedCount of chapters scrapedchapters_count from backend
Status BadgeCurrent job statusstatus field
Last UpdatedTimestamp of last activitycreated_at or updated_at
Chapter count is read from the .jsonl progress file. Each line represents one chapter, so the backend counts lines in {job_id}_progress.jsonl.

Data Flow

History Page (React)

    HTTP GET /api/history

Python Backend (api.py)

jobs_history.json + progress files

Returns job metadata + chapter counts

History Page renders table

Troubleshooting

Check the Library page instead. Completed downloads are stored as EPUB files and may not appear in History if they were finalized successfully.
  • Ensure the Python backend is running (http://127.0.0.1:8000/api/health)
  • Check that start_url is still valid for the novel
  • Verify the provider script is still installed
The progress file may be corrupted or missing. Try resuming the download or deleting the history entry.
This happens if the app crashed during download. Click Stop in the Download Manager or delete the history entry and restart.

Next Steps

Download Manager

Learn how to start and control downloads

Library Manager

View and read your completed EPUBs

Backend API

Explore the history API endpoints

Troubleshooting

Common issues and solutions