Commit 3d4415d
UN-2966 [FEAT] Auto-refresh and controls for execution logs (#1687)
* UN-2454 [FIX] Avoid polling infinitely for in-progress execution
- Update DetailedLogs and ExecutionLogs components to properly handle polling state
- Update index.js dependencies
- Update workers dependencies in pyproject.toml and uv.lock
🤖 Generated with Claude Code
Co-Authored-By: Claude <[email protected]>
* Revert accidental changes to index.js and workers dependencies
Reverted files that were not part of the intended fix:
- frontend/src/index.js
- workers/pyproject.toml
- workers/uv.lock
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <[email protected]>
* UN-2454 [FIX] Fix date handling and polling logic in logging components
- Fixed date calculation bug: use raw ISO timestamps instead of formatted display strings
- Added createdAtRaw and modified_atRaw fields to preserve parseable date values
- Implement stale interval re-check: stop polling when execution is >1 hour old via executionDetailsRef
- Replace forEach loops with for...of for improved performance (4 instances)
Fixes CodeRabbit comments about infinite polling and ensures logging components correctly handle timestamp calculations and respect staleness thresholds.
🤖 Generated with Claude Code
Co-Authored-By: Claude <[email protected]>
* Update frontend/src/components/logging/detailed-logs/DetailedLogs.jsx
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Signed-off-by: Chandrasekharan M <[email protected]>
* UN-2454 [FIX] Use isFinite() for robust date validation in logging components
Replace isNaN() with isFinite() for date validation in ExecutionLogs and DetailedLogs to prevent infinite polling when invalid timestamps occur.
- DetailedLogs.jsx: Changed isNaN() to isFinite() check
- ExecutionLogs.jsx: Added missing isFinite() date validation
🤖 Generated with Claude Code
Co-Authored-By: Claude <[email protected]>
* UN-2454 [FIX] Resolve stale closure bug in polling state management
Use ref instead of state for pollingIds to prevent stale closure issues in polling logic:
- Added pollingIdsRef to track actively polling execution IDs
- Updated all polling operations to directly mutate ref (no re-renders needed)
- Removed redundant pollingIds state to eliminate unnecessary re-renders
- Prevents duplicate polling loops and potential memory leaks
🤖 Generated with Claude Code
Co-Authored-By: Claude <[email protected]>
* minor: Addressed a code smell
* wip: Refresh and data filter above table
* UN-2966 [FEAT] Auto-refresh toggle and controls for execution logs
- Add reusable LogsRefreshControls component (toggle + refresh button)
- Move date picker from nav bar to content area in ExecutionLogs
- Update DetailedLogs to use shared LogsRefreshControls component
- Fix table height to fill available space using flexbox layout
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <[email protected]>
* UN-2966 [FEAT] Enhanced execution logs UI with improved layout and controls
- Added sticky table header for better scrolling experience
- Improved pagination positioning and styling with reduced padding
- Enhanced table layout with scrollbar isolated to table body
- Fixed layout spacing in DetailedLogs header with refresh controls
- Updated CSS for better visual consistency across logs components
🤖 Generated with Claude Code
Co-Authored-By: Claude <[email protected]>
* UN-2966 [REFACTOR] Clean up DetailedLogs layout and improve UI
- Moved "View Logs" button from header to cards row for better layout
- Kept LogsRefreshControls in header top-right
- Changed "View Logs" from link to button with FileTextOutlined icon
- Removed unnecessary .detailed-logs-header-controls wrapper div
- Updated header padding and button margins for consistency
- Fixed pagination label in LogsTable (items → executions)
🤖 Generated with Claude Code
Co-Authored-By: Claude <[email protected]>
* UN-2966 [FEAT] Table layout, column visibility controls and pagination fixes for execution/detailed logs
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <[email protected]>
* UN-2966 [REFACTOR] Improve DetailedLogs table column sizing with percentage-based widths
- Implement responsive column widths using fixed px for predictable content
- Status Message column gets 30% (most important variable content)
- File Name gets 12%, File Path gets 20% for variable content
- Reduced fixed columns: Executed At (140px), Status (110px), File Size (70px)
- Execution Time (90px), Action (60px) for better space distribution
- Added explanatory comment for width allocation strategy
* UN-2966 [FEATURE] Add sorting and execution ID filter to logs
- Add file_size and execution_time sorting to DetailedLogs and LogsTable
- Add execution ID filter search to ExecutionLogs page
- Implement field mapping for proper backend sort ordering
- Update API filter backend with id field for search capability
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <[email protected]>
* UN-2966 [FIX] Resolve CodeRabbit review comments
Fixed RangePicker null guard to prevent runtime errors on partial date selection. Removed unused createdAtRaw field from ExecutionLogs and DetailedLogs components.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <[email protected]>
* UN-2966 [FIX] Use UUIDFilter for execution id field
Changed `id` filter from `CharFilter(lookup_expr="icontains")` to `UUIDFilter()` in ExecutionFilter. UUIDs don't support icontains lookup, so this fixes a potential FieldError.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <[email protected]>
* UN-2966 [FIX] Disable refresh controls when execution reaches terminal state
- Added terminal state detection for COMPLETED/ERROR/STOPPED statuses
- Auto-refresh automatically disables when execution completes
- Refresh button and toggle are disabled with visual feedback
- Tooltip shows execution completion message when disabled
🤖 Generated with Claude Code
Co-Authored-By: Claude <[email protected]>
* UN-2966 [FIX] Add PropTypes validation for StatusMessageCell
Added PropTypes import and validation for StatusMessageCell component's 'text' prop to resolve ESLint error and prevent potential runtime issues.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <[email protected]>
* UN-2966 [FIX] Address SonarQube code smells in logging components
- ExecutionLogs.jsx: Use optional chaining (value?.[0]) for cleaner null checks
- LogsTable.jsx: Extract inline components (SearchFilterDropdown, SearchFilterIcon) with proper PropTypes for reusability and maintainability
🤖 Generated with Claude Code
Co-Authored-By: Claude <[email protected]>
* UN-2966 [FIX] Prevent Action column from being hidden in visibility menu
Excluded "action" column from the visibility menu to prevent users from losing access to the column visibility dropdown. This ensures the Action column remains always visible, maintaining user ability to interact with the table controls.
🤖 Generated with Claude Code
Co-Authored-By: Claude <[email protected]>
* UN-2966 [FIX] Add error handling for clipboard operations
* UN-2966 [FIX] Mark StatusMessageCell text prop as required
* UN-2966 [FIX] Add missing id dependency to useEffect
* UN-2966 [REFACTOR] Move SearchFilterIcon inline style to CSS
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <[email protected]>
* UN-2966 [REFACTOR] Extract inline component definitions to module level
- DetailedLogs.jsx: Extracted ActionColumnHeader component to module level
- LogsTable.jsx: Removed unnecessary arrow function wrappers for filterDropdown and filterIcon
- Resolves SonarQube code smell for inline component definitions
🤖 Generated with Claude Code
Co-Authored-By: Claude <[email protected]>
* UN-2966 [REFACTOR] Remove unnecessary arrow function wrapper from title prop
Simplified the title prop by removing redundant arrow function wrapper. The title prop accepts JSX elements directly, so the wrapper was unnecessary.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <[email protected]>
---------
Signed-off-by: Chandrasekharan M <[email protected]>
Co-authored-by: Claude <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>1 parent c59b5c3 commit 3d4415d
File tree
13 files changed
+658
-186
lines changed- backend/workflow_manager
- execution
- file_execution
- frontend/src
- components/logging
- detailed-logs
- execution-logs
- logs-refresh-controls
- logs-table
- store
- unstract/workflow-execution/src/unstract/workflow_execution
13 files changed
+658
-186
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
13 | 14 | | |
14 | 15 | | |
15 | 16 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
| 19 | + | |
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| |||
Lines changed: 140 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
1 | 65 | | |
2 | 66 | | |
3 | 67 | | |
| |||
16 | 80 | | |
17 | 81 | | |
18 | 82 | | |
19 | | - | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
20 | 123 | | |
21 | 124 | | |
22 | | - | |
23 | | - | |
| 125 | + | |
| 126 | + | |
24 | 127 | | |
25 | 128 | | |
26 | 129 | | |
| |||
32 | 135 | | |
33 | 136 | | |
34 | 137 | | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
0 commit comments