Commit 0149d04
[FEAT] Add search functionality to LLMs, VectorDBs, Embeddings, and Connectors pages (#1694)
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <117059509+chandrasekharan-zipstack@users.noreply.github.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* Add search functionality to LLMs, VectorDBs, Embeddings, and Connectors pages
- Create reusable useListSearch hook for client-side search
- Add search to ToolSettings (LLMs, VectorDBs, Embeddings pages)
- Add search to ConnectorsPage
- Search is case-insensitive, debounced (600ms), filters by name
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Preserve search filter when updating master list in useListSearch hook
Previously, CRUD operations (add/edit/delete) would clear the active
search filter because updateMasterList directly set displayList to the
full updated list. Now a searchTextRef stores the current search text
and re-applies the filter when the master list is updated.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Refactor handleDelete to reduce nesting depth in ToolSettings
Extract handleDeleteSuccess function to avoid nesting callbacks more
than 4 levels deep, fixing SonarQube code smell.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Signed-off-by: Chandrasekharan M <117059509+chandrasekharan-zipstack@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>1 parent 48e4a01 commit 0149d04
3 files changed
Lines changed: 101 additions & 34 deletions
File tree
- frontend/src
- components/tool-settings/tool-settings
- hooks
- pages
Lines changed: 37 additions & 30 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| 18 | + | |
18 | 19 | | |
19 | 20 | | |
20 | 21 | | |
| |||
33 | 34 | | |
34 | 35 | | |
35 | 36 | | |
36 | | - | |
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
51 | 58 | | |
52 | 59 | | |
53 | | - | |
| 60 | + | |
54 | 61 | | |
55 | 62 | | |
56 | 63 | | |
| |||
67 | 74 | | |
68 | 75 | | |
69 | 76 | | |
70 | | - | |
| 77 | + | |
71 | 78 | | |
72 | 79 | | |
73 | 80 | | |
| |||
79 | 86 | | |
80 | 87 | | |
81 | 88 | | |
82 | | - | |
83 | | - | |
84 | | - | |
85 | | - | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
90 | 97 | | |
91 | | - | |
92 | | - | |
93 | | - | |
| 98 | + | |
94 | 99 | | |
95 | 100 | | |
96 | 101 | | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
97 | 112 | | |
98 | 113 | | |
99 | 114 | | |
| |||
105 | 120 | | |
106 | 121 | | |
107 | 122 | | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | | - | |
121 | | - | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
122 | 126 | | |
123 | 127 | | |
124 | 128 | | |
| |||
221 | 225 | | |
222 | 226 | | |
223 | 227 | | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
224 | 231 | | |
225 | 232 | | |
226 | 233 | | |
| |||
237 | 244 | | |
238 | 245 | | |
239 | 246 | | |
240 | | - | |
| 247 | + | |
241 | 248 | | |
242 | 249 | | |
243 | 250 | | |
| |||
257 | 264 | | |
258 | 265 | | |
259 | 266 | | |
260 | | - | |
| 267 | + | |
261 | 268 | | |
262 | 269 | | |
263 | 270 | | |
| |||
| 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 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
10 | 11 | | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
14 | 15 | | |
15 | 16 | | |
16 | 17 | | |
17 | | - | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| 32 | + | |
| 33 | + | |
32 | 34 | | |
33 | 35 | | |
34 | 36 | | |
| |||
39 | 41 | | |
40 | 42 | | |
41 | 43 | | |
42 | | - | |
| 44 | + | |
43 | 45 | | |
44 | 46 | | |
45 | 47 | | |
| |||
155 | 157 | | |
156 | 158 | | |
157 | 159 | | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
158 | 163 | | |
159 | 164 | | |
160 | 165 | | |
161 | 166 | | |
162 | 167 | | |
163 | | - | |
| 168 | + | |
164 | 169 | | |
165 | 170 | | |
166 | 171 | | |
| |||
172 | 177 | | |
173 | 178 | | |
174 | 179 | | |
175 | | - | |
| 180 | + | |
176 | 181 | | |
177 | 182 | | |
178 | 183 | | |
| |||
0 commit comments