feat(crawler): add table row navigation, duplicate rerun debounce and export enhancements
Overview
This pull request improves the user experience across the Crawler dashboard and detail pages. It enables table row navigation, debounces rerun actions to prevent duplicate job dispatching, automatically redirects upon rerun from the detail page, and polishes quota usage & export states.
Key Changes
1. Table Row Click Navigation
-
Crawler Table (
crawler-task-table.tsx):- Made the entire table row clickable (
cursor-pointer hover:bg-muted/30), redirecting users directly to the job detail view (/crawl-jobs/[id]). - Added
e.stopPropagation()to all nested interactive elements (checkboxes, copy buttons, status badges, action dropdowns, and external links) to prevent unwanted navigation triggers.
- Made the entire table row clickable (
2. Double-Click & Duplicate Rerun Debouncing
-
Debounce Mutex (
use-crawl-jobs.ts): Added a module-levelrerunInFlighttracker to eliminate duplicate requests fired within 2.5 seconds. -
UI State (
crawler-task-table.tsx): Disabled rerun actions and displayed spinning indicators while an operation is in progress. -
Detail View Auto-redirect (
crawl-jobs/[id]/page.tsx): Triggering a rerun from the job detail view now smoothly redirects the user to the newly created job page (/crawl-jobs/[new-id]).
3. Partial Export & Progress Sync
- Enabled export actions and export modal triggers for stopped/canceled jobs having
successPages > 0. - Synchronized progress bar calculations between discovered total pages and real-time processed pages.
4. UI Cleanups & Quota Widget
- Cleaned up confusing "100% resource limit reached" warning placeholder on the home dashboard.
- Standardized translations in
translations.ts.