Discrete Fourier Transform Support#403
Conversation
📝 WalkthroughWalkthroughAdds a frequency/period spectrum mode to the XY output component backed by new FFT/periodogram utilities and tests, plus supporting CSS. Makes small changes to Gantt rich-cursor rendering and tooltip pointer events. Pins a Yarn dependency resolution. Reformats numerous config, workflow, docs, CSS, HTML, and script files without functional changes. ChangesFrequency Spectrum Visualization
Gantt Rich Cursor and Tooltip Pointer Behavior
Dependency Resolution
Repo-wide Formatting and Config Cleanup
Estimated code review effort: 3 (Moderate) | ~25 minutes Sequence Diagram(s)sequenceDiagram
participant User
participant XYOutputComponent
participant buildFrequencyData
participant computePeriodogram
participant ChartJS
User->>XYOutputComponent: click frequency toggle
XYOutputComponent->>XYOutputComponent: setState frequencyMode=true
XYOutputComponent->>buildFrequencyData: request datasets for displayed series
buildFrequencyData->>computePeriodogram: compute period/power per series
computePeriodogram-->>buildFrequencyData: PeriodPower[]
buildFrequencyData-->>XYOutputComponent: cached frequency datasets
XYOutputComponent->>ChartJS: render Line chart with datasets
Related issues: None referenced in the provided changes. Related PRs: None referenced in the provided changes. Suggested labels: documentation, dependencies, enhancement Suggested reviewers: None determinable from the provided changes. 🐰 a hop through configs, crisp and neat, 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 9
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/ci-cd.yml:
- Around line 27-30: The workflow still uses actions/setup-java@v3, which needs
to be upgraded. Update the setup-java step in the CI/CD workflow to v4 or newer
while keeping the existing distribution setting for temurin and the Java 17
version. Use the actions/setup-java reference in the workflow so the runner uses
a supported Node version.
In @.github/workflows/license-check-workflow.yml:
- Around line 39-43: The workflow step in the Java setup job still uses
actions/setup-java@v3 with the deprecated adopt distribution. Update the
setup-java action in the matrix Java step to v4 and change the distribution
value to a supported option such as temurin (or semeru if OpenJ9 is intended).
Keep the rest of the job logic unchanged and make sure the step named Use Java
${{ matrix.java }} continues to use matrix.java for the version.
In `@CONTRIBUTING.md`:
- Around line 62-65: The sign-off bullet in CONTRIBUTING.md has a broken rewrap
that leaves a stray greater-than character and splits the sentence. Fix the
markdown under the sign-off section by removing the extra character, keeping the
full bullet text on a clean wrap, and preserving the surrounding link bullets
for commit-message-message and commit-message-example.
In `@doc/DEVELOPER-GUIDE.md`:
- Around line 1314-1317: The `analysisStarted` message payload is inconsistent
with the downstream handler, which expects an object containing `analysisId`
rather than a bare value. Update the `postMessage` call in the sample so the
`analysisStarted` data matches the shape used by the receiving code
(`data.analysisId`), and keep the same object structure wherever this message is
sent.
In
`@local-libs/traceviewer-libs/react-components/src/components/tooltip-component.tsx`:
- Line 95: The tooltip style is preventing its own hover handlers from firing,
so the mouse-over state in tooltip-component is never reached. In the tooltip
component’s hover logic, either remove or clearly document the now-unused
this.isMouseOver/updateState hover guard if pass-through is intended, or change
the pointerEvents setting so onMouseEnter/onMouseLeave can still run and keep
the tooltip interaction working.
In
`@local-libs/traceviewer-libs/react-components/style/dialog-component-style.css`:
- Around line 17-28: The .dialog-header style in dialog-component-style.css has
a dead padding declaration because the earlier padding: 5px is overwritten by
the later shorthand. Remove the redundant declaration, or if the 5px vertical
spacing is intended, merge it into the remaining padding rule so .dialog-header
has a single effective padding value.
In `@local-libs/traceviewer-libs/react-components/style/react-contextify.css`:
- Around line 114-240: The animation keyframes in react-contextify.css use names
that violate the lint rule, so rename the react-contexify__scaleIn/scaleOut,
react-contexify__fadeIn/fadeOut, react-contexify__flipInX/flipOutX, and
react-contexify__slideIn/slideOut keyframes to compliant names and update every
matching animation reference in the .react-contexify__will-enter--* and
.react-contexify__will-leave--* դասes accordingly.
In `@README.md`:
- Around line 293-297: The README wording around the Trace Viewer and remote-ssh
support should use “VSCode-compatible” as a hyphenated modifier for consistency
and readability. Update the sentence in the remote support section so the phrase
currently describing “VSCode compatible applications” is hyphenated, keeping the
rest of the guidance unchanged. Locate and adjust the text in the remote support
paragraph that mentions remote-ssh, open-remote-ssh, and the OpenVSX registry.
In `@vscode-trace-extension/README.md`:
- Around line 39-41: The command example in the README has a stray trailing
quote, making the copied shell command invalid. Update the example under the
tracecompass-server launch instructions to remove the dangling quote so the
command for starting tracecompass-server is copy-pasteable as written.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: b3a60313-18c7-40a9-baed-c3d28f5d0880
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (61)
.github/ISSUE_TEMPLATE/bug_report.md.github/ISSUE_TEMPLATE/feature_request.md.github/ISSUE_TEMPLATE/question.md.github/workflows/ci-cd.yml.github/workflows/license-check-workflow.yml.github/workflows/release.yml.vscode/launch.json.vscode/settings.jsonCODE_OF_CONDUCT.mdCONTRIBUTING.mdREADME.mdSECURITY.mdconfigs/base.eslintrc.jsonconfigs/build.eslintrc.jsonconfigs/common-tsconfig.jsonconfigs/errors.eslintrc.jsonconfigs/warnings.eslintrc.jsondoc/DEVELOPER-GUIDE.mddoc/Develop-new-view-type.mddoc/Publishing.mdlocal-libs/README.mdlocal-libs/traceviewer-libs/.github/ISSUE_TEMPLATE/bug_report.mdlocal-libs/traceviewer-libs/.github/ISSUE_TEMPLATE/feature_request.mdlocal-libs/traceviewer-libs/.github/ISSUE_TEMPLATE/question.mdlocal-libs/traceviewer-libs/.github/workflows/ci-cd.ymllocal-libs/traceviewer-libs/CODE_OF_CONDUCT.mdlocal-libs/traceviewer-libs/CONTRIBUTING.mdlocal-libs/traceviewer-libs/README.mdlocal-libs/traceviewer-libs/SECURITY.mdlocal-libs/traceviewer-libs/base/.eslintrc.jslocal-libs/traceviewer-libs/base/tsconfig.jsonlocal-libs/traceviewer-libs/react-components/.eslintrc.jslocal-libs/traceviewer-libs/react-components/jest.config.jsonlocal-libs/traceviewer-libs/react-components/src/components/abstract-gantt-output-component.tsxlocal-libs/traceviewer-libs/react-components/src/components/tooltip-component.tsxlocal-libs/traceviewer-libs/react-components/src/components/utils/__tests__/frequency-utils.test.tslocal-libs/traceviewer-libs/react-components/src/components/utils/frequency-utils.tslocal-libs/traceviewer-libs/react-components/src/components/xy-output-component.tsxlocal-libs/traceviewer-libs/react-components/style/dialog-component-style.csslocal-libs/traceviewer-libs/react-components/style/output-components-style.csslocal-libs/traceviewer-libs/react-components/style/react-contextify.csslocal-libs/traceviewer-libs/react-components/style/status-bar.csslocal-libs/traceviewer-libs/react-components/style/trace-context-style.csslocal-libs/traceviewer-libs/react-components/style/trace-explorer.csslocal-libs/traceviewer-libs/react-components/tsconfig.jsonpackage.jsonplaywright.config.tspublic/index.htmlpublic/manifest.jsonscripts/typescript-references.jsvscode-trace-common/.eslintrc.jsvscode-trace-common/tsconfig.jsonvscode-trace-extension/.eslintrc.jsvscode-trace-extension/README.mdvscode-trace-extension/tsconfig.jsonvscode-trace-extension/webpack.config.jsvscode-trace-webviews/.eslintrc.jsvscode-trace-webviews/public/index.htmlvscode-trace-webviews/public/manifest.jsonvscode-trace-webviews/tsconfig.jsonvscode-trace-webviews/webpack.config.js
💤 Files with no reviewable changes (2)
- local-libs/traceviewer-libs/react-components/style/trace-context-style.css
- local-libs/traceviewer-libs/react-components/style/status-bar.css
| - uses: actions/setup-java@v3 | ||
| with: | ||
| distribution: 'temurin' | ||
| java-version: '17' |
There was a problem hiding this comment.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Inspect the workflow section around the referenced lines.
sed -n '20,40p' .github/workflows/ci-cd.ymlRepository: eclipse-cdt-cloud/vscode-trace-extension
Length of output: 2003
🌐 Web query:
actions/setup-java v4 distribution accepted values temurin v3 deprecation GitHub Actions
💡 Result:
In GitHub Actions, actions/setup-java v4 and newer versions fully support 'temurin' as a valid distribution value [1][2]. You can specify it in your workflow configuration as follows: - uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '21' Regarding v3, while the action itself may technically function, the use of actions/setup-java@v3 is generally considered deprecated in favor of v4 or newer (with v5+ now available) [3][4]. This is primarily because older major versions of setup-java rely on deprecated dependencies, such as older versions of actions/cache (e.g., actions/cache@v2), which are no longer recommended for use [4]. It is highly recommended to migrate to the latest major version (currently v5+) to ensure compatibility, security, and access to the latest runners and features [3][4].
Citations:
- 1: https://github.com/actions/setup-java/blob/main/README.md
- 2: https://gitea.angry.im/actions/setup-java/raw/tag/v4.7.0/docs/advanced-usage.md
- 3: https://github.com/actions/setup-java/tree/v3
- 4: pact-foundation/pact-jvm@a796b1c
🌐 Web query:
actions/setup-java v3 node16 GitHub Actions support deprecated runtime official
💡 Result:
The actions/setup-java v3 release was intentionally updated to use Node.js 16 as its runtime [1][2], representing a transition from the earlier Node.js 12 runtime [1][2]. However, Node.js 16 itself has long been deprecated within the GitHub Actions ecosystem [3][4]. GitHub initiated the transition of all actions from Node 16 to Node 20 starting in late 2023 [4]. Node 16 officially reached its end-of-life on GitHub Actions runners on November 12, 2024 [5]. Consequently, using actions/setup-java v3 (or any action reliant on Node 16) is obsolete and unsupported. To resolve deprecation warnings or potential workflow failures, you must update your workflows to use the latest major version of the action, which operates on a supported Node.js runtime [5][3]. As of July 2026, you should be using a version of actions/setup-java that supports current requirements (e.g., v4 or later, which moved to Node 20) [6]. Note that GitHub is also actively managing the deprecation of Node 20, which began in September 2025 [7].
Citations:
- 1: https://github.com/actions/setup-java/releases/tag/v3.0.0
- 2: Update Default runtime to node16 actions/setup-java#290
- 3: https://github.blog/changelog/2024-03-06-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/
- 4: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/
- 5: https://github.blog/changelog/2024-09-25-end-of-life-for-actions-node16/
- 6: Need to update some @action/cache dependencies actions/setup-java#618
- 7: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Upgrade actions/setup-java to v4 or newer. actions/setup-java@v3 relies on Node 16, which is no longer supported on GitHub Actions runners. distribution: 'temurin' is still valid.
🧰 Tools
🪛 actionlint (1.7.12)
[error] 27-27: the runner of "actions/setup-java@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue
(action)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/ci-cd.yml around lines 27 - 30, The workflow still uses
actions/setup-java@v3, which needs to be upgraded. Update the setup-java step in
the CI/CD workflow to v4 or newer while keeping the existing distribution
setting for temurin and the Java 17 version. Use the actions/setup-java
reference in the workflow so the runner uses a supported Node version.
Source: Linters/SAST tools
| - name: Use Java ${{ matrix.java }} | ||
| uses: actions/setup-java@v3 | ||
| with: | ||
| distribution: 'adopt' | ||
| java-version: ${{ matrix.java }} |
There was a problem hiding this comment.
🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== workflow excerpt =="
sed -n '1,120p' .github/workflows/license-check-workflow.yml
echo
echo "== setup-java occurrences =="
rg -n "setup-java|distribution:" .github/workflows -SRepository: eclipse-cdt-cloud/vscode-trace-extension
Length of output: 2003
🌐 Web query:
actions/setup-java v4 distribution adopt accepted deprecated GitHub Actions
💡 Result:
The adopt distribution in actions/setup-java is deprecated and should no longer be used [1][2][3]. The AdoptOpenJDK project, which provided the adopt distribution, has been superseded by the Eclipse Adoptium project, and its builds are no longer updated [1][4][5]. It is highly recommended to migrate your GitHub Actions workflows from adopt to temurin (for HotSpot) or semeru (for OpenJ9) to ensure you continue to receive critical software and security updates [1][6]. To update your workflow, change the distribution input in your setup-java step: - Change distribution: 'adopt' or 'adopt-hotspot' to distribution: 'temurin' [1][4][3]. - Change distribution: 'adopt-openj9' to distribution: 'semeru' [1][6]. The adopt distribution is deprecated because it relies on the original AdoptOpenJDK project, which is no longer maintained [1][4]. Using the legacy distribution puts your builds at risk of security vulnerabilities and potential failures if the legacy infrastructure remains unstable [5].
Citations:
- 1: https://github.com/actions/setup-java/blob/main/README.md
- 2: GitHub workflow: adopt distribution for actions/setup-java is deprecated Adyen/adyen-java-api-library#1722
- 3: https://docs.openrewrite.org/recipes/github/setupjavaadoptopenjdktotemurin
- 4: https://github.com/actions/setup-java/blob/f4f1212c/docs/advanced-usage.md
- 5: Run actions/setup-java@v3.3.0: Trying to resolve the latest version from remote (adopt distribution phased out) actions/setup-java#335
- 6: http://github.com/actions/setup-java
Migrate actions/setup-java to v4 and replace adopt. distribution: 'adopt' is deprecated in actions/setup-java; switch to temurin (or semeru for OpenJ9) instead.
Suggested fix
- uses: actions/setup-java@v3
+ uses: actions/setup-java@v4
...
- distribution: 'adopt'
+ distribution: 'temurin'📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - name: Use Java ${{ matrix.java }} | |
| uses: actions/setup-java@v3 | |
| with: | |
| distribution: 'adopt' | |
| java-version: ${{ matrix.java }} | |
| - name: Use Java ${{ matrix.java }} | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: 'temurin' | |
| java-version: ${{ matrix.java }} |
🧰 Tools
🪛 actionlint (1.7.12)
[error] 40-40: the runner of "actions/setup-java@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue
(action)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/license-check-workflow.yml around lines 39 - 43, The
workflow step in the Java setup job still uses actions/setup-java@v3 with the
deprecated adopt distribution. Update the setup-java action in the matrix Java
step to v4 and change the distribution value to a supported option such as
temurin (or semeru if OpenJ9 is intended). Keep the rest of the job logic
unchanged and make sure the step named Use Java ${{ matrix.java }} continues to
use matrix.java for the version.
Source: Linters/SAST tools
| - [_Sign-off:_][sign-off] Use your full name and a long-term email address. This certifies that you | ||
| have written the code and that, from a licensing perspective, the > | ||
| - [How to format the message][commit-message-message] | ||
| - [Example commit message][commit-message-example] |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Fix the broken sign-off rewrap.
The reflow leaves a stray > in the rendered Markdown and breaks the sign-off sentence. Please remove the extra character and keep the bullet text intact.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@CONTRIBUTING.md` around lines 62 - 65, The sign-off bullet in CONTRIBUTING.md
has a broken rewrap that leaves a stray greater-than character and splits the
sentence. Fix the markdown under the sign-off section by removing the extra
character, keeping the full bullet text on a clean wrap, and preserving the
surrounding link bullets for commit-message-message and commit-message-example.
| this.panel.webview.postMessage({ method: 'analysisStarted', data: analysisId }); | ||
| return; | ||
| } | ||
| this.panel.webview.postMessage({ method: "errorMsg", message: 'Failed to start analysis' }); | ||
| this.panel.webview.postMessage({ method: 'errorMsg', message: 'Failed to start analysis' }); |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Keep the analysisStarted payload shape consistent.
This posts a bare analysisId, but the handler below treats the payload as an object (data.analysisId). As written, the sample will render undefined unless both sides agree on the same shape.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@doc/DEVELOPER-GUIDE.md` around lines 1314 - 1317, The `analysisStarted`
message payload is inconsistent with the downstream handler, which expects an
object containing `analysisId` rather than a bare value. Update the
`postMessage` call in the sample so the `analysisStarted` data matches the shape
used by the receiving code (`data.analysisId`), and keep the same object
structure wherever this message is sent.
| const tooltipStyle: React.CSSProperties = { | ||
| position: 'fixed', | ||
| pointerEvents: 'auto', | ||
| pointerEvents: 'none', |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Map the component structure first
ast-grep outline local-libs/traceviewer-libs/react-components/src/components/tooltip-component.tsx --view expanded || true
# Read the relevant section with line numbers
sed -n '1,260p' local-libs/traceviewer-libs/react-components/src/components/tooltip-component.tsx | cat -n
# Find references to isMouseOver and tooltip mouse handlers in this component and repo
rg -n "isMouseOver|handleTooltipMouseEnter|handleTooltipMouseLeave|pointerEvents: 'none'" local-libs/traceviewer-libs/react-components/src/components -S
# Look for tests around tooltip behavior
fd -a "tooltip*" local-libs/traceviewer-libs/react-components || trueRepository: eclipse-cdt-cloud/vscode-trace-extension
Length of output: 2003
🌐 Web query:
CSS pointer-events none mouseenter mouseleave element does not receive pointer events descendant React synthetic onMouseEnter onMouseLeave
💡 Result:
When an element has the CSS property pointer-events: none, it is removed from the hit-testing process, meaning it can no longer be the target of pointer events [1][2]. Consequently, it will not trigger mouseenter or mouseleave events, nor will its React synthetic equivalents (onMouseEnter and onMouseLeave) fire [2][3][4]. Key Technical Details: - Pointer events pass through: When pointer-events: none is applied, mouse events (such as click, mouseover, and mousemove) essentially "pass through" the element to the content underneath it [3][5]. - Event firing: Because the element is ignored by the browser's pointer hit-testing, the browser does not track the mouse entering or leaving that element's physical space [2]. - React behavior: React's synthetic onMouseEnter and onMouseLeave events rely on the underlying native browser events [6][7]. Since the browser does not dispatch these events to the element, React does not receive or trigger the corresponding synthetic handlers [2][3][4]. - Descendant elements: If an element with pointer-events: none contains descendants, those descendants will also typically not receive pointer events unless they explicitly override the property with pointer-events: auto [1]. If you need an element to be visually present but still receive mouse events, you must avoid pointer-events: none. Common workarounds include: - Removing pointer-events: none and adjusting z-index or absolute positioning to ensure the element does not block other interactive content [3]. - Using pointer-events: auto on specific sub-elements if you only need to disable pointer events for the container but not its children [1]. - Using onPointerEnter and onPointerLeave, though these are also subject to the same pointer-events hit-testing limitations [8].
Citations:
- 1: https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/pointer-events
- 2: https://moshfeu.github.io/show-tooltip-on-pointer-events-none-element/
- 3: https://stackoverflow.com/questions/64403108/fire-react-onmousemove-event-when-css-pointer-events-none-is-set
- 4: https://stackoverflow.com/questions/45258950/onmouseenter-and-onmouseleave-not-functioning-as-expected
- 5: https://stackoverflow.com/questions/22057927/mouseenter-mouseleave-ignoring-covering-element
- 6: https://legacy.reactjs.org/docs/events.html
- 7: React synthetic mouseenter event fires before dom mouseleave event react/react#10471
- 8: Bug: onMouseLeave does not trigger on disabled button react/react#18753
🌐 Web query:
React onMouseEnter pointer-events none element hover handlers real browsers
💡 Result:
When you set an element to pointer-events: none in CSS, it ceases to be the target of any mouse events [1][2]. Consequently, any React event handlers attached to that element, such as onMouseEnter or onMouseMove, will not fire because the browser essentially ignores the element for pointer interaction purposes [3][4][1]. Key technical points regarding this behavior: 1. Interaction "Fall-through": Setting pointer-events: none instructs the browser to let mouse events "fall through" the element to whatever is underneath it in the DOM hierarchy [2]. 2. Event Handlers: Because the element is no longer a valid target for pointer interactions, event listeners attached to it via React (which uses event delegation) will not receive the events [1]. 3. Browser Consistency: This is standard browser behavior, not a React-specific issue [5][1]. All modern browsers consistently apply this rule; the element will not trigger mouse-related callbacks [6][2]. 4. Potential Workarounds: - If you need the element to remain visual but still capture events, you must remove the pointer-events: none property [3][4]. - If you need a "transparent" element to allow clicks to pass through to elements underneath but still want to trigger interactions, consider using a different CSS approach (such as controlling the element's visibility) or, if necessary, calculate pointer positions manually via a parent element using getBoundingClientRect to check if the mouse is within the intended bounds [7]. In summary, if you attach an onMouseEnter handler to an element with pointer-events: none, the handler will not execute because the element is explicitly excluded from the browser's pointer event processing [1].
Citations:
- 1: https://stackoverflow.com/questions/53394067/mousemove-on-pointer-events-none-div
- 2: https://www.bennadel.com/blog/4659-nesting-the-pointer-events-property-in-css.htm
- 3: https://stackoverflow.com/questions/64403108/fire-react-onmousemove-event-when-css-pointer-events-none-is-set
- 4: https://stackoverflow.com/questions/45258950/onmouseenter-and-onmouseleave-not-functioning-as-expected
- 5: Bug: MouseEnter does not fire when coming _from_ disabled elements react/react#19419
- 6: https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/pointer-events
- 7: https://stackoverflow.com/questions/4305690/is-there-any-way-to-disable-some-dom-element-from-capturing-mouse-events
pointerEvents: 'none' disables the tooltip hover handlers
onMouseEnter/onMouseLeave on this tooltip won’t fire anymore, so this.isMouseOver stays false and the hover guard in updateState is effectively dead. If the pass-through behavior is intentional, remove or document the now-unreachable hover state logic; otherwise this regresses tooltip interaction.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@local-libs/traceviewer-libs/react-components/src/components/tooltip-component.tsx`
at line 95, The tooltip style is preventing its own hover handlers from firing,
so the mouse-over state in tooltip-component is never reached. In the tooltip
component’s hover logic, either remove or clearly document the now-unused
this.isMouseOver/updateState hover guard if pass-through is intended, or change
the pointerEvents setting so onMouseEnter/onMouseLeave can still run and keep
the tooltip interaction working.
| @keyframes react-contexify__scaleIn { | ||
| from { | ||
| opacity: 0; | ||
| transform: scale3d(0.3, 0.3, 0.3); | ||
| opacity: 0; | ||
| transform: scale3d(0.3, 0.3, 0.3); | ||
| } | ||
| to { | ||
| opacity: 1; | ||
| opacity: 1; | ||
| } | ||
| } | ||
| @keyframes react-contexify__scaleOut { | ||
| } | ||
| @keyframes react-contexify__scaleOut { | ||
| from { | ||
| opacity: 1; | ||
| opacity: 1; | ||
| } | ||
| to { | ||
| opacity: 0; | ||
| transform: scale3d(0.3, 0.3, 0.3); | ||
| opacity: 0; | ||
| transform: scale3d(0.3, 0.3, 0.3); | ||
| } | ||
| } | ||
| .react-contexify__will-enter--scale { | ||
| } | ||
| .react-contexify__will-enter--scale { | ||
| transform-origin: top left; | ||
| animation: react-contexify__scaleIn 0.3s; | ||
| } | ||
| .react-contexify__will-leave--scale { | ||
| } | ||
|
|
||
| .react-contexify__will-leave--scale { | ||
| transform-origin: top left; | ||
| animation: react-contexify__scaleOut 0.3s; | ||
| } | ||
| @keyframes react-contexify__fadeIn { | ||
| } | ||
|
|
||
| @keyframes react-contexify__fadeIn { | ||
| from { | ||
| opacity: 0; | ||
| transform: translateY(10px); | ||
| opacity: 0; | ||
| transform: translateY(10px); | ||
| } | ||
| to { | ||
| opacity: 1; | ||
| transform: translateY(0); | ||
| opacity: 1; | ||
| transform: translateY(0); | ||
| } | ||
| } | ||
| @keyframes react-contexify__fadeOut { | ||
| } | ||
| @keyframes react-contexify__fadeOut { | ||
| from { | ||
| opacity: 1; | ||
| transform: translateY(0); | ||
| opacity: 1; | ||
| transform: translateY(0); | ||
| } | ||
| to { | ||
| opacity: 0; | ||
| transform: translateY(10px); | ||
| opacity: 0; | ||
| transform: translateY(10px); | ||
| } | ||
| } | ||
| .react-contexify__will-enter--fade { | ||
| } | ||
| .react-contexify__will-enter--fade { | ||
| animation: react-contexify__fadeIn 0.3s ease; | ||
| } | ||
| .react-contexify__will-leave--fade { | ||
| } | ||
|
|
||
| .react-contexify__will-leave--fade { | ||
| animation: react-contexify__fadeOut 0.3s ease; | ||
| } | ||
| @keyframes react-contexify__flipInX { | ||
| } | ||
|
|
||
| @keyframes react-contexify__flipInX { | ||
| from { | ||
| transform: perspective(800px) rotate3d(1, 0, 0, 45deg); | ||
| transform: perspective(800px) rotate3d(1, 0, 0, 45deg); | ||
| } | ||
| to { | ||
| transform: perspective(800px); | ||
| transform: perspective(800px); | ||
| } | ||
| } | ||
| @keyframes react-contexify__flipOutX { | ||
| } | ||
| @keyframes react-contexify__flipOutX { | ||
| from { | ||
| transform: perspective(800px); | ||
| transform: perspective(800px); | ||
| } | ||
| to { | ||
| transform: perspective(800px) rotate3d(1, 0, 0, 45deg); | ||
| opacity: 0; | ||
| transform: perspective(800px) rotate3d(1, 0, 0, 45deg); | ||
| opacity: 0; | ||
| } | ||
| } | ||
| .react-contexify__will-enter--flip { | ||
| } | ||
| .react-contexify__will-enter--flip { | ||
| -webkit-backface-visibility: visible !important; | ||
| backface-visibility: visible !important; | ||
| backface-visibility: visible !important; | ||
| transform-origin: top center; | ||
| animation: react-contexify__flipInX 0.3s; | ||
| } | ||
| .react-contexify__will-leave--flip { | ||
| } | ||
|
|
||
| .react-contexify__will-leave--flip { | ||
| transform-origin: top center; | ||
| animation: react-contexify__flipOutX 0.3s; | ||
| -webkit-backface-visibility: visible !important; | ||
| backface-visibility: visible !important; | ||
| } | ||
| @keyframes swing-in-top-fwd { | ||
| backface-visibility: visible !important; | ||
| } | ||
|
|
||
| @keyframes swing-in-top-fwd { | ||
| 0% { | ||
| transform: rotateX(-100deg); | ||
| transform-origin: top; | ||
| opacity: 0; | ||
| transform: rotateX(-100deg); | ||
| transform-origin: top; | ||
| opacity: 0; | ||
| } | ||
| 100% { | ||
| transform: rotateX(0deg); | ||
| transform-origin: top; | ||
| opacity: 1; | ||
| transform: rotateX(0deg); | ||
| transform-origin: top; | ||
| opacity: 1; | ||
| } | ||
| } | ||
| @keyframes react-contexify__slideIn { | ||
| } | ||
| @keyframes react-contexify__slideIn { | ||
| from { | ||
| opacity: 0; | ||
| transform: scale3d(1, 0.3, 1); | ||
| opacity: 0; | ||
| transform: scale3d(1, 0.3, 1); | ||
| } | ||
| to { | ||
| opacity: 1; | ||
| opacity: 1; | ||
| } | ||
| } | ||
| @keyframes react-contexify__slideOut { | ||
| } | ||
| @keyframes react-contexify__slideOut { | ||
| from { | ||
| opacity: 1; | ||
| opacity: 1; | ||
| } | ||
| to { | ||
| opacity: 0; | ||
| transform: scale3d(1, 0.3, 1); | ||
| opacity: 0; | ||
| transform: scale3d(1, 0.3, 1); | ||
| } | ||
| } | ||
| .react-contexify__will-enter--slide { | ||
| } | ||
| .react-contexify__will-enter--slide { | ||
| transform-origin: top center; | ||
| animation: react-contexify__slideIn 0.3s; | ||
| } | ||
| .react-contexify__will-leave--slide { | ||
| } | ||
|
|
||
| .react-contexify__will-leave--slide { | ||
| transform-origin: top center; | ||
| animation: react-contexify__slideOut 0.3s; | ||
| } | ||
| /*# sourceMappingURL=ReactContexify.css.map */ | ||
| } | ||
|
|
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Rename these keyframes to match the lint rule.
Stylelint flags the react-contexify__*In/Out animation names here. Renaming the keyframes and every animation: reference will keep this stylesheet lint-clean.
♻️ Example fix
-@keyframes react-contexify__scaleIn {
+@keyframes react-contexify__scale-in {
from {
opacity: 0;
transform: scale3d(0.3, 0.3, 0.3);
}
@@
.react-contexify__will-enter--scale {
transform-origin: top left;
- animation: react-contexify__scaleIn 0.3s;
+ animation: react-contexify__scale-in 0.3s;
}Apply the same rename pattern to the fade, flip, and slide variants.
🧰 Tools
🪛 Stylelint (17.14.0)
[error] 114-114: Expected keyframe name "react-contexify__scaleIn" to be kebab-case (keyframes-name-pattern)
(keyframes-name-pattern)
[error] 123-123: Expected keyframe name "react-contexify__scaleOut" to be kebab-case (keyframes-name-pattern)
(keyframes-name-pattern)
[error] 142-142: Expected keyframe name "react-contexify__fadeIn" to be kebab-case (keyframes-name-pattern)
(keyframes-name-pattern)
[error] 152-152: Expected keyframe name "react-contexify__fadeOut" to be kebab-case (keyframes-name-pattern)
(keyframes-name-pattern)
[error] 170-170: Expected keyframe name "react-contexify__flipInX" to be kebab-case (keyframes-name-pattern)
(keyframes-name-pattern)
[error] 178-178: Expected keyframe name "react-contexify__flipOutX" to be kebab-case (keyframes-name-pattern)
(keyframes-name-pattern)
[error] 213-213: Expected keyframe name "react-contexify__slideIn" to be kebab-case (keyframes-name-pattern)
(keyframes-name-pattern)
[error] 222-222: Expected keyframe name "react-contexify__slideOut" to be kebab-case (keyframes-name-pattern)
(keyframes-name-pattern)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@local-libs/traceviewer-libs/react-components/style/react-contextify.css`
around lines 114 - 240, The animation keyframes in react-contextify.css use
names that violate the lint rule, so rename the
react-contexify__scaleIn/scaleOut, react-contexify__fadeIn/fadeOut,
react-contexify__flipInX/flipOutX, and react-contexify__slideIn/slideOut
keyframes to compliant names and update every matching animation reference in
the .react-contexify__will-enter--* and .react-contexify__will-leave--* դասes
accordingly.
Source: Linters/SAST tools
| The `Trace Viewer for VSCode` extension is compatible with the use of [remote-ssh](https://code.visualstudio.com/docs/remote/ssh). If you are using `remote-ssh`, you can simply install `Trace Viewer for VSCode` extension on your remote machine and begin using the extension. For VSCode compatible applications you can install the [open-remote-ssh][open-remote-ssh] extension from the [public OpenVSX registry][open-vsx] to get similar functionality. | ||
|
|
||
| The remote support works by forwarding the Trace Server's operating port from the client machine to the remote machine. The port is automatically forwarded on Trace Server startup. | ||
|
|
||
| Forwarded ports can be seen in the 'Ports' view of the remote VsCode. To open the `Ports` view use menu `View -> Open view... -> Ports`. You should see the forwarded Trace Server port in the `Ports` view, as shown below: | ||
| Forwarded ports can be seen in the 'Ports' view of the remote VsCode. To open the `Ports` view use menu `View -> Open view... -> Ports`. You should see the forwarded Trace Server port in the `Ports` view, as shown below: |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Hyphenate “VSCode-compatible” here.
The new wording reads more naturally with the hyphen, and keeps the docs consistent with standard grammar.
🧰 Tools
🪛 LanguageTool
[grammar] ~293-~293: Use a hyphen to join words.
Context: ...nd begin using the extension. For VSCode compatible applications you can install ...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@README.md` around lines 293 - 297, The README wording around the Trace Viewer
and remote-ssh support should use “VSCode-compatible” as a hyphenated modifier
for consistency and readability. Update the sentence in the remote support
section so the phrase currently describing “VSCode compatible applications” is
hyphenated, keeping the rest of the guidance unchanged. Locate and adjust the
text in the remote support paragraph that mentions remote-ssh, open-remote-ssh,
and the OpenVSX registry.
Source: Linters/SAST tools
| and start it. e.g.: | ||
|
|
||
| > ./trace-compass-server-latest-linux.gtk.x86_64/tracecompass-server" |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Drop the stray quote in the command example.
The tracecompass-server command ends with a dangling " here, which makes the copy-pasted shell command invalid.
Fix
-> ./trace-compass-server-latest-linux.gtk.x86_64/tracecompass-server"
+> ./trace-compass-server-latest-linux.gtk.x86_64/tracecompass-server📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| and start it. e.g.: | |
| > ./trace-compass-server-latest-linux.gtk.x86_64/tracecompass-server" | |
| and start it. e.g.: | |
| > ./trace-compass-server-latest-linux.gtk.x86_64/tracecompass-server |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@vscode-trace-extension/README.md` around lines 39 - 41, The command example
in the README has a stray trailing quote, making the copied shell command
invalid. Update the example under the tracecompass-server launch instructions to
remove the dangling quote so the command for starting tracecompass-server is
copy-pasteable as written.
|
@JonatanAntoni this is a mess, but I will fix it. I think you'll like the feature though. |
There was a problem hiding this comment.
revert the change
There was a problem hiding this comment.
revert the change
There was a problem hiding this comment.
revert the change
There was a problem hiding this comment.
revert the change
There was a problem hiding this comment.
revert the change
There was a problem hiding this comment.
revert the change
There was a problem hiding this comment.
revert the change
There was a problem hiding this comment.
revert the change
There was a problem hiding this comment.
revert the change
d162a9c to
a49005c
Compare
Adds a frequency/period spectrum view to the XY output, toggled from a corner button. Each spectral component is drawn as a vertical bar (stem) on a real linear/logarithmic period axis, with a lin/log scale toggle. - frequency-utils.ts: radix-2 FFT + periodogram + period formatting - xy-output-component.tsx: frequency mode, bar rendering, axis toggles - output-components-style.css: toggle button styles Signed-off-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Signed-off-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
What it does
Add discrete fourier transforms to the XY plots

How to test
Open an XY Plot and click on the corner button
Follow-ups
Review checklist
Summary by CodeRabbit
New Features
Tests
Documentation
Chores