feat(admin): user search by email/ID, remove table border#3646
feat(admin): user search by email/ID, remove table border#3646waleedlatif1 merged 6 commits intomainfrom
Conversation
* Fix files * Fix * Fix
…ow registry on switch
* feat(csp): allow chat UI to be embedded in iframes Mirror the existing form embed CSP pattern for chat pages: add getChatEmbedCSPPolicy() with frame-ancestors *, configure /chat/:path* headers in next.config.ts without X-Frame-Options, and early-return in proxy.ts so chat routes skip the strict runtime CSP. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(csp): extract shared getEmbedCSPPolicy helper Deduplicate getChatEmbedCSPPolicy and getFormEmbedCSPPolicy into a shared private helper to prevent future divergence. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* fix(logs): persist execution diagnostics markers Store last-started and last-completed block markers with finalization metadata so later read surfaces can explain how a run ended without reconstructing executor state. * fix(executor): preserve durable diagnostics ordering Await only the persistence needed to keep diagnostics durable before terminal completion while keeping callback failures from changing execution behavior. * fix(logs): preserve fallback diagnostics semantics Keep successful fallback output and accumulated cost intact while tightening progress-write draining and deduplicating trace span counting for diagnostics helpers. * fix(api): restore async execute route test mock Add the missing AuthType export to the hybrid auth mock so the async execution route test exercises the 202 queueing path instead of crashing with a 500 in CI. * fix(executor): align async block error handling * fix(logs): tighten marker ordering scope Allow same-millisecond marker writes to replace prior markers and drop the unused diagnostics read helper so this PR stays focused on persistence rather than unread foundation code. * fix(logs): remove unused finalization type guard Drop the unused helper so this PR only ships the persistence-side status types it actually uses. * fix(executor): await subflow diagnostics callbacks Ensure empty-subflow and subflow-error lifecycle callbacks participate in progress-write draining before terminal finalization while still swallowing callback failures. --------- Co-authored-by: test <test@example.com> Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai>
- Replace Load Users button with a live search input; query fires on any input - Email search uses listUsers with contains operator - User ID search (UUID format) uses admin.getUser directly for exact lookup - Remove outer border on user table that rendered white in dark mode - Reset pagination to page 0 on new search Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
You have used all Bugbot PR reviews included in your free trial for your GitHub account on this workspace. To continue using Bugbot reviews, enable Bugbot for your team in the Cursor dashboard. |
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Greptile SummaryThis PR ships two user-visible features (admin user search by email/UUID and a dark-mode border fix) alongside a substantial batch of infrastructure improvements across the executor, logging session, and CSP layers. Admin search (primary feature)
Block lifecycle persistence (
Executor async propagation (
Other fixes
Confidence Score: 5/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant Executor as BlockExecutor
participant WBS as wrappedOnBlockStart
participant LS as LoggingSession
participant DB as Database
participant UCB as UserCallback (onBlockStart)
Executor->>WBS: callOnBlockStart(blockId, blockName, blockType, order)
WBS->>LS: onBlockStart(blockId, blockName, blockType, now())
LS->>LS: trackProgressWrite(persistLastStartedBlock())
LS->>DB: UPDATE workflow_execution_logs SET execution_data -> lastStartedBlock WHERE startedAt <= now()
DB-->>LS: ok
LS-->>WBS: resolved
WBS-->>UCB: void callback(...).catch(warn) [fire-and-forget]
WBS-->>Executor: resolved (persistence guaranteed)
Note over Executor: Block executes…
Executor->>WBS: callOnBlockComplete(blockId, name, type, output)
WBS->>LS: onBlockComplete(blockId, name, type, output)
LS->>LS: trackProgressWrite(persistLastCompletedBlock())
LS->>DB: UPDATE workflow_execution_logs SET execution_data -> lastCompletedBlock WHERE endedAt <= output.endedAt
DB-->>LS: ok
LS->>LS: (if cost > 0) void trackProgressWrite(flushAccumulatedCost())
LS-->>WBS: resolved
WBS-->>UCB: void onBlockComplete(...).catch(warn) [fire-and-forget]
WBS-->>Executor: resolved
Note over Executor: Terminal finalization…
Executor->>LS: safeComplete / safeCompleteWithError / etc.
LS->>LS: drainPendingProgressWrites() [awaits all in-flight DB writes]
LS->>DB: completeWorkflowExecution (with finalizationPath, lastStartedBlock, lastCompletedBlock)
DB-->>LS: ok
LS-->>Executor: done
Last reviewed commit: "fix(admin): replace ..." |
- Split searchInput (controlled input) from searchQuery (committed value) so the hook only fires on Search click or Enter, not every keystroke - Gate table render on searchQuery.length > 0 to prevent stale results showing after input is cleared Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Addressed all three comments: Excessive API requests (P1) — Replaced live search with an explicit Search button + Enter key support. Stale results on clear (P1) — Gated the table render on
|
|
@greptile |
Summary
listUserswith acontainsoperator; pasting a UUID switches toadmin.getUserfor exact ID lookup. Pagination resets on each new search.border-[var(--border-secondary)]on the user table container, which was rendering white in dark mode.Test plan