Skip to content

feat(webui): Display timeline for guided Presto search.#1376

Merged
hoophalab merged 13 commits into
y-scope:mainfrom
hoophalab:show-timeline
Oct 9, 2025
Merged

feat(webui): Display timeline for guided Presto search.#1376
hoophalab merged 13 commits into
y-scope:mainfrom
hoophalab:show-timeline

Conversation

@hoophalab

@hoophalab hoophalab commented Oct 3, 2025

Copy link
Copy Markdown
Contributor

Description

This PR shows the timeline display for guided Presto search.

Changes:

  1. Trigger query submission when timeline zoom and when the guided search button is clicked.
  2. Transform the aggregation result from a {row: TimelineBucket}[] to TimelineBucket[] in useAggregationResult
  3. Modify the timeline SQL builder to match the exact aggregation result format from CLP

Checklist

  • The PR satisfies the contribution guidelines.
  • This is a breaking change and that has been indicated in the PR title, OR this isn't a
    breaking change.
  • Necessary docs have been updated, OR no docs need to be updated.

Validation performed

  1. Compress PostgreSQL dataset.
  2. Execute a query.
  3. Change time range input and resubmit.
  4. Zoom in on the timeline.
  5. Timeline and data are correctly displayed.

Summary by CodeRabbit

  • New Features

    • Added Guided mode for Presto searches with dedicated Run/Cancel, time-range handling, and timeline re-query on zoom.
    • Introduced engine-specific timelines for Presto and Native search, with live bucket counts and total results updates.
    • Displayed in-app warnings for fetch issues and surfaced unhandled errors on run.
  • Refactor

    • Simplified timeline rendering by delegating to engine-specific components.
    • Improved timestamp handling using Unix-based calculations for more accurate timelines.
    • Updated conditional rendering so timelines appear for Presto when using Guided mode.
  • Style

    • Minor formatting adjustments with no functional impact.

@hoophalab hoophalab requested a review from a team as a code owner October 3, 2025 20:14
@coderabbitai

coderabbitai Bot commented Oct 3, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Introduces a guided Presto SQL flow: adds query builders and submit/cancel handlers, integrates timeline zoom-driven requerying, refactors timeline rendering to engine-specific components, updates timestamp handling to Dayjs/unix in SQL builder, and gates timeline visibility based on Presto SQL interface. Minor whitespace tweak in a Presto request file.

Changes

Cohort / File(s) Summary of changes
Guided Presto run & cancel flow
components/webui/client/src/pages/SearchPage/SearchControls/Presto/SqlSearchButton/RunButton/GuidedRunButton.tsx, components/webui/client/src/pages/SearchPage/SearchControls/Presto/SqlSearchButton/CancelButton/index.tsx, components/webui/client/src/pages/SearchPage/SearchControls/Presto/presto-guided-search-requests.ts
Adds guided run button behaviour (time-range resolve, query build/submit, timeline config update, user warnings), guided cancel branching, and a new module exporting buildPrestoGuidedQueries, handlePrestoGuidedQuerySubmit, handlePrestoGuidedQueryCancel.
Search results timeline refactor (engine split)
components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/index.tsx, components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/Presto/PrestoResultsTimeline.tsx, components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/NativeResultsTimeline.tsx, components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/Presto/usePrestoAggregationResults.ts
Replaces unified timeline with engine-specific components. Adds Presto timeline component with zoom-driven guided requery, aggregation subscription hook, and Native timeline component with existing submission flow. Selector index now chooses component by engine.
Timeline gating in page
components/webui/client/src/pages/SearchPage/index.tsx
Adjusts visibility of timeline: show when engine is not Presto or when Presto SQL interface is GUIDED. Adds state read for sqlInterface.
SQL parser timestamp handling
components/webui/client/src/sql-parser/index.ts, components/webui/client/src/sql-parser/typings.ts
Switches timestamp props to Dayjs and uses .unix()/.valueOf() for query generation and bucket math; updates typings accordingly; adjusts join order/CAST in timeline SQL.
Presto legacy requests (cosmetic)
components/webui/client/src/pages/SearchPage/SearchControls/Presto/presto-search-requests.ts
Inserts blank line before JSDoc comments; no functional changes.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant RunBtn as GuidedRunButton
  participant Store as Search Store
  participant Builder as buildPrestoGuidedQueries
  participant Guided as handlePrestoGuidedQuerySubmit
  participant Backend as Query Service

  User->>RunBtn: Click
  RunBtn->>Store: Read timeRangeOption/timeRange
  alt Non-CUSTOM time range
    RunBtn->>Store: updateTimeRange(resolved via map)
  end
  RunBtn->>Store: updateTimelineConfig(compute from range)
  RunBtn->>Builder: build searchQueryString + timelineQueryString
  Builder-->>RunBtn: {search, timeline}
  RunBtn->>Guided: submit({search, timeline})
  Guided->>Store: reset UI, mark pending
  par Submit search
    Guided->>Backend: POST search query
    Backend-->>Guided: searchJobId
  and Submit timeline
    Guided->>Backend: POST aggregation query
    Backend-->>Guided: aggregationJobId
  end
  Guided->>Store: save jobIds, set UI state
Loading
sequenceDiagram
  autonumber
  participant TL as PrestoResultsTimeline
  participant Store as Search Store
  participant Builder as buildPrestoGuidedQueries
  participant Guided as handlePrestoGuidedQuerySubmit
  participant Backend as Query Service

  TL->>TL: User zooms timeline
  TL->>Store: updateTimelineConfig(new)
  TL->>Store: updateTimeRange(new), set timeRangeOption=CUSTOM
  TL->>Builder: build queries for new range
  Builder-->>TL: {search, timeline}
  TL->>Guided: submit({search, timeline})
  Guided->>Backend: run search + aggregation
  Backend-->>Guided: job ids
  Guided->>Store: update job ids/UI state
Loading
sequenceDiagram
  autonumber
  actor User
  participant Cancel as CancelButton
  participant Guided as handlePrestoGuidedQueryCancel
  participant Legacy as handlePrestoQueryCancel
  participant Store as Search Store

  User->>Cancel: Click
  Cancel->>Store: Read sqlInterface, jobIds
  alt Presto GUIDED and has aggregationJobId
    Cancel->>Guided: cancel(searchJobId, aggregationJobId)
    Guided->>Store: set UI DONE
  else Non-guided or no aggregationJobId
    Cancel->>Legacy: cancel(searchJobId)
    Legacy->>Store: set UI DONE
  end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested reviewers

  • junhaoliao

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title succinctly conveys the addition of timeline display functionality specific to guided Presto searches, matching the core changes introduced in the pull request and avoiding extraneous details or generic phrasing.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

coderabbitai[bot]

This comment was marked as resolved.

coderabbitai[bot]

This comment was marked as duplicate.

@hoophalab hoophalab requested a review from davemarco October 3, 2025 20:54

@davemarco davemarco left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall looks good. I have clean up comments

Comment thread components/webui/client/src/sql-parser/index.ts Outdated
@hoophalab hoophalab requested a review from davemarco October 7, 2025 17:10

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

♻️ Duplicate comments (2)
components/webui/client/src/sql-parser/index.ts (1)

180-181: Critical: Wrong JOIN direction drops zero-count buckets.

The query uses FROM buckets LEFT JOIN timestamps, which only returns rows where buckets exist. This drops empty time intervals (zero counts) from the timeline, making it incomplete.

For a complete timeline showing all time intervals, drive from timestamps and left-join buckets:

 SELECT
     COALESCE(cnt, 0) AS count,
     CAST(timestamp AS double) AS timestamp
-FROM buckets
-LEFT JOIN timestamps ON buckets.idx = timestamps.idx
+FROM timestamps
+LEFT JOIN buckets ON buckets.idx = timestamps.idx
 ORDER BY timestamps.idx
components/webui/client/src/pages/SearchPage/SearchControls/Presto/SqlSearchButton/RunButton/GuidedRunButton.tsx (1)

88-94: Fix disabled predicate and surface errors without rethrowing

!isQueryReady violates the “prefer `false === …`” guideline, and rethrowing inside onClick recreates the unhandled rejection we had before. Please adopt the earlier suggestion: compare explicitly against false and handle the rejection locally (log or surface a toast) instead of rethrowing.

-                disabled={!isQueryReady ||
+                disabled={false === isQueryReady ||
                     searchUiState === SEARCH_UI_STATE.QUERY_ID_PENDING}
-                onClick={() => {
-                    handleClick().catch((err: unknown) => {
-                        throw err;
-                    });
-                }}
+                onClick={async () => {
+                    try {
+                        await handleClick();
+                    } catch (err) {
+                        console.error(err);
+                    }
+                }}

As per coding guidelines

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c349e2a and a247b1a.

📒 Files selected for processing (10)
  • components/webui/client/src/pages/SearchPage/SearchControls/Presto/SqlSearchButton/CancelButton/index.tsx (2 hunks)
  • components/webui/client/src/pages/SearchPage/SearchControls/Presto/SqlSearchButton/RunButton/GuidedRunButton.tsx (4 hunks)
  • components/webui/client/src/pages/SearchPage/SearchControls/Presto/presto-guided-search-requests.ts (1 hunks)
  • components/webui/client/src/pages/SearchPage/SearchControls/Presto/presto-search-requests.ts (2 hunks)
  • components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/Presto/PrestoVirtualResultsTimeline.tsx (1 hunks)
  • components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/Presto/useAggregationResults.ts (1 hunks)
  • components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/VirtualResultsTimeline.tsx (1 hunks)
  • components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/index.tsx (2 hunks)
  • components/webui/client/src/sql-parser/index.ts (4 hunks)
  • components/webui/client/src/sql-parser/typings.ts (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{cpp,hpp,java,js,jsx,tpp,ts,tsx}

⚙️ CodeRabbit configuration file

  • Prefer false == <expression> rather than !<expression>.

Files:

  • components/webui/client/src/pages/SearchPage/SearchControls/Presto/SqlSearchButton/CancelButton/index.tsx
  • components/webui/client/src/sql-parser/typings.ts
  • components/webui/client/src/sql-parser/index.ts
  • components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/VirtualResultsTimeline.tsx
  • components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/Presto/useAggregationResults.ts
  • components/webui/client/src/pages/SearchPage/SearchControls/Presto/presto-guided-search-requests.ts
  • components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/index.tsx
  • components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/Presto/PrestoVirtualResultsTimeline.tsx
  • components/webui/client/src/pages/SearchPage/SearchControls/Presto/presto-search-requests.ts
  • components/webui/client/src/pages/SearchPage/SearchControls/Presto/SqlSearchButton/RunButton/GuidedRunButton.tsx
🧬 Code graph analysis (8)
components/webui/client/src/pages/SearchPage/SearchControls/Presto/SqlSearchButton/CancelButton/index.tsx (2)
components/webui/client/src/pages/SearchPage/SearchControls/Presto/presto-search-requests.ts (1)
  • handlePrestoQueryCancel (111-111)
components/webui/client/src/pages/SearchPage/SearchControls/Presto/presto-guided-search-requests.ts (1)
  • handlePrestoGuidedQueryCancel (197-197)
components/webui/client/src/sql-parser/typings.ts (1)
components/webui/client/src/sql-parser/index.ts (2)
  • BuildSearchQueryProps (202-202)
  • BuildTimelineQueryProps (203-203)
components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/VirtualResultsTimeline.tsx (7)
components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/Presto/useAggregationResults.ts (1)
  • useAggregationResults (49-49)
components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/useAggregationResults.ts (1)
  • useAggregationResults (36-36)
components/webui/client/src/pages/SearchPage/SearchControls/TimeRangeInput/utils.tsx (1)
  • TIME_RANGE_OPTION (130-130)
components/webui/client/src/pages/SearchPage/SearchState/index.tsx (1)
  • SEARCH_STATE_DEFAULT (163-163)
components/webui/client/src/config/index.ts (2)
  • CLP_STORAGE_ENGINES (26-26)
  • SETTINGS_STORAGE_ENGINE (28-28)
components/webui/client/src/pages/SearchPage/SearchControls/search-requests.ts (1)
  • handleQuerySubmit (148-148)
components/webui/client/src/pages/SearchPage/SearchState/typings.ts (1)
  • SEARCH_UI_STATE (31-31)
components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/Presto/useAggregationResults.ts (3)
components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/useAggregationResults.ts (1)
  • useAggregationResults (36-36)
components/webui/client/src/api/socket/useCursor.tsx (1)
  • useCursor (78-78)
components/webui/client/src/pages/SearchPage/SearchState/index.tsx (1)
  • SEARCH_STATE_DEFAULT (163-163)
components/webui/client/src/pages/SearchPage/SearchControls/Presto/presto-guided-search-requests.ts (3)
components/webui/client/src/pages/SearchPage/SearchState/typings.ts (1)
  • SEARCH_UI_STATE (31-31)
components/webui/client/src/sql-parser/index.ts (2)
  • buildSearchQuery (195-195)
  • buildTimelineQuery (196-196)
components/webui/client/src/pages/SearchPage/SearchState/index.tsx (1)
  • SEARCH_STATE_DEFAULT (163-163)
components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/index.tsx (1)
components/webui/client/src/config/index.ts (1)
  • SETTINGS_QUERY_ENGINE (27-27)
components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/Presto/PrestoVirtualResultsTimeline.tsx (5)
components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/Presto/useAggregationResults.ts (1)
  • useAggregationResults (49-49)
components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/useAggregationResults.ts (1)
  • useAggregationResults (36-36)
components/webui/client/src/pages/SearchPage/SearchControls/TimeRangeInput/utils.tsx (1)
  • TIME_RANGE_OPTION (130-130)
components/webui/client/src/pages/SearchPage/SearchControls/Presto/presto-guided-search-requests.ts (2)
  • buildPrestoGuidedQueries (196-196)
  • handlePrestoGuidedQuerySubmit (198-198)
components/webui/client/src/pages/SearchPage/SearchState/typings.ts (1)
  • SEARCH_UI_STATE (31-31)
components/webui/client/src/pages/SearchPage/SearchControls/Presto/SqlSearchButton/RunButton/GuidedRunButton.tsx (2)
components/webui/client/src/pages/SearchPage/SearchControls/TimeRangeInput/utils.tsx (2)
  • TIME_RANGE_OPTION (130-130)
  • TIME_RANGE_OPTION_DAYJS_MAP (131-131)
components/webui/client/src/pages/SearchPage/SearchControls/Presto/presto-guided-search-requests.ts (2)
  • buildPrestoGuidedQueries (196-196)
  • handlePrestoGuidedQuerySubmit (198-198)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: package-image
  • GitHub Check: rust-checks (ubuntu-22.04)
  • GitHub Check: rust-checks (ubuntu-24.04)
  • GitHub Check: rust-checks (macos-15)
  • GitHub Check: lint-check (ubuntu-24.04)
  • GitHub Check: lint-check (macos-15)
🔇 Additional comments (3)
components/webui/client/src/sql-parser/typings.ts (1)

1-1: LGTM! Type safety improvement.

The change from number to Dayjs for timestamp properties provides better type safety and aligns with the PR's objective to standardize time handling using Dayjs across the guided Presto search functionality.

Also applies to: 10-11, 17-18

components/webui/client/src/sql-parser/index.ts (2)

107-107: LGTM! Correct use of Unix seconds.

The use of .unix() correctly converts Dayjs timestamps to Unix seconds (seconds since epoch) for SQL operations with to_unixtime(), ensuring proper timestamp comparisons in the WHERE clause and width_bucket bounds.

Also applies to: 163-164, 168-168


149-153: Unit inconsistency: timestamps in milliseconds vs width_bucket in seconds.

The timestamps array contains milliseconds (from valueOf()), but width_bucket operates on Unix seconds. While the join is based on bucket indices (not timestamp values), this unit mismatch creates confusion and could lead to display issues if consumers expect timestamps aligned with the bucket boundaries.

Consider changing line 152 to generate Unix seconds:

-        (_, i) => Math.floor(startTimestamp.valueOf() + (i * step))
+        (_, i) => Math.floor((startTimestamp.valueOf() + (i * step)) / 1000)

Or adjust the step calculation to work in seconds from the start:

-    const step = (endTimestamp.valueOf() - startTimestamp.valueOf()) / bucketCount;
+    const step = (endTimestamp.unix() - startTimestamp.unix()) / bucketCount;
     const timestamps = Array.from(
         {length: bucketCount},
-        (_, i) => Math.floor(startTimestamp.valueOf() + (i * step))
+        (_, i) => Math.floor(startTimestamp.unix() + (i * step))
     );

Likely an incorrect or invalid review comment.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
components/webui/client/src/pages/SearchPage/SearchControls/Presto/SqlSearchButton/CancelButton/index.tsx (1)

34-34: Address the previous review feedback.

The condition on Line 34 still has not addressed the feedback from the previous review:

  1. It uses a hard-coded null instead of the SEARCH_STATE_DEFAULT.aggregationJobId sentinel
  2. It uses === instead of == for the boolean check, which does not follow the coding guideline

As suggested in the previous review, please apply this diff:

-import useSearchStore from "../../../../SearchState/index";
+import useSearchStore, {SEARCH_STATE_DEFAULT} from "../../../../SearchState/index";
...
-        if (false === isPrestoGuided || null === aggregationJobId) {
+        if (
+            false == isPrestoGuided ||
+            SEARCH_STATE_DEFAULT.aggregationJobId === aggregationJobId
+        ) {
             handlePrestoQueryCancel({searchJobId});
         } else {
             handlePrestoGuidedQueryCancel(searchJobId, aggregationJobId);
         }

Based on coding guidelines

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a247b1a and df326de.

📒 Files selected for processing (2)
  • components/webui/client/src/pages/SearchPage/SearchControls/Presto/SqlSearchButton/CancelButton/index.tsx (2 hunks)
  • components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/Presto/useAggregationResults.ts (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{cpp,hpp,java,js,jsx,tpp,ts,tsx}

⚙️ CodeRabbit configuration file

  • Prefer false == <expression> rather than !<expression>.

Files:

  • components/webui/client/src/pages/SearchPage/SearchControls/Presto/SqlSearchButton/CancelButton/index.tsx
  • components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/Presto/useAggregationResults.ts
🧬 Code graph analysis (1)
components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/Presto/useAggregationResults.ts (2)
components/webui/client/src/api/socket/useCursor.tsx (1)
  • useCursor (78-78)
components/webui/client/src/pages/SearchPage/SearchState/index.tsx (1)
  • SEARCH_STATE_DEFAULT (163-163)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: package-image
  • GitHub Check: lint-check (ubuntu-24.04)
  • GitHub Check: lint-check (macos-15)
  • GitHub Check: rust-checks (ubuntu-24.04)
  • GitHub Check: rust-checks (macos-15)
  • GitHub Check: rust-checks (ubuntu-22.04)
🔇 Additional comments (4)
components/webui/client/src/pages/SearchPage/SearchControls/Presto/SqlSearchButton/CancelButton/index.tsx (2)

10-12: LGTM!

The new imports are correctly added to support the guided Presto cancellation flow.


24-26: LGTM!

The state access and derived flag are implemented correctly.

components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/Presto/useAggregationResults.ts (2)

15-15: LGTM! Selector pattern correctly applied.

The aggregation job ID is now selected directly from the store using a selector function, which prevents unnecessary re-renders when other search state fields change. This addresses the past review feedback.


35-44: LGTM! Transformation logic is clear and correct.

The memoized transformation correctly unwraps the aggregation results from {row: TimelineBucket}[] to TimelineBucket[], matching the expected format described in the PR objectives. The null check and array mapping are both appropriate.

return null;
}

const cursor = aggregationResultsCursor as {row: TimelineBucket}[];

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

return cursor?.map(({ row }) => row) ?? null;

Is this simpler? I feel like this will only update when the data changes, so the memo isnt helping that much

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if there is some annoying thing with doing this in a hook, u can probably just take this logic outside the hook

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so u disagree here i guess?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I've already made the change?

I agree with you. We only need return cursor?.map(({ row }) => row) ?? null; if not multiplexing the hook. I didn't clean it up when separating the two hooks.

It looks that we cannot put the logic outside hook. It confuses react and causes infinite recursive rendering?

@hoophalab hoophalab requested a review from davemarco October 8, 2025 17:19
coderabbitai[bot]

This comment was marked as outdated.

davemarco

This comment was marked as resolved.

*
* @return
*/
const ClpResultsTimeline = () => {

@hoophalab hoophalab Oct 8, 2025

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both resultstimeline and searchresultstimeline are already used. How about using ClpResultsTimeline? @davemarco

@davemarco davemarco Oct 9, 2025

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry last change.. I was using Native (for clp and clp-s) for this. Like NativeResultsTimeline

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hoophalab just tagging so u see this

coderabbitai[bot]

This comment was marked as off-topic.

coderabbitai[bot]

This comment was marked as outdated.

davemarco
davemarco previously approved these changes Oct 9, 2025

@davemarco davemarco left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

last tweek lgtm

*
* @return
*/
const ClpResultsTimeline = () => {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hoophalab just tagging so u see this

@hoophalab hoophalab requested a review from davemarco October 9, 2025 15:47
coderabbitai[bot]

This comment was marked as duplicate.

@junhaoliao junhaoliao left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

deferring to @davemarco 's review

@hoophalab hoophalab merged commit 321aeee into y-scope:main Oct 9, 2025
22 checks passed
@hoophalab hoophalab deleted the show-timeline branch October 23, 2025 19:06
junhaoliao pushed a commit to junhaoliao/clp that referenced this pull request May 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants