From 602ede892575e1b0676483835e8499cb9f6a5555 Mon Sep 17 00:00:00 2001 From: arlo Date: Thu, 30 Apr 2026 15:27:57 +0800 Subject: [PATCH 1/2] feat: init --- .../app/components/compare/ChangeBadge.vue | 47 ++ .../src/app/components/compare/DeltaBar.vue | 46 ++ .../src/app/components/compare/DeltaValue.vue | 64 ++ .../app/components/compare/SessionMeta.vue | 21 +- .../app/components/compare/SingleSideRow.vue | 62 ++ .../src/app/components/compare/SplitRow.vue | 134 ++++ .../components/display/ComparisonMetric.vue | 2 +- .../app/pages/compare/[sessions]/index.vue | 642 +++++++++++++++++- .../rpc/functions/rolldown-get-packages.ts | 102 +-- .../rolldown-get-session-compare-details.ts | 534 +++++++++++++++ packages/rolldown/src/node/rpc/index.ts | 2 + packages/rolldown/src/shared/types/data.ts | 115 ++++ .../shared/utils/__tests__/filepath.test.ts | 27 +- .../rolldown/src/shared/utils/filepath.ts | 51 +- packages/ui/src/components/PanelSideNav.vue | 1 + packages/ui/src/composables/nav.ts | 1 + 16 files changed, 1765 insertions(+), 86 deletions(-) create mode 100644 packages/rolldown/src/app/components/compare/ChangeBadge.vue create mode 100644 packages/rolldown/src/app/components/compare/DeltaBar.vue create mode 100644 packages/rolldown/src/app/components/compare/DeltaValue.vue create mode 100644 packages/rolldown/src/app/components/compare/SingleSideRow.vue create mode 100644 packages/rolldown/src/app/components/compare/SplitRow.vue create mode 100644 packages/rolldown/src/node/rpc/functions/rolldown-get-session-compare-details.ts diff --git a/packages/rolldown/src/app/components/compare/ChangeBadge.vue b/packages/rolldown/src/app/components/compare/ChangeBadge.vue new file mode 100644 index 00000000..91898621 --- /dev/null +++ b/packages/rolldown/src/app/components/compare/ChangeBadge.vue @@ -0,0 +1,47 @@ + + + diff --git a/packages/rolldown/src/app/components/compare/DeltaBar.vue b/packages/rolldown/src/app/components/compare/DeltaBar.vue new file mode 100644 index 00000000..4f0b99e3 --- /dev/null +++ b/packages/rolldown/src/app/components/compare/DeltaBar.vue @@ -0,0 +1,46 @@ + + + diff --git a/packages/rolldown/src/app/components/compare/DeltaValue.vue b/packages/rolldown/src/app/components/compare/DeltaValue.vue new file mode 100644 index 00000000..1ca4d3ec --- /dev/null +++ b/packages/rolldown/src/app/components/compare/DeltaValue.vue @@ -0,0 +1,64 @@ + + + diff --git a/packages/rolldown/src/app/components/compare/SessionMeta.vue b/packages/rolldown/src/app/components/compare/SessionMeta.vue index 36190f0f..b27d939c 100644 --- a/packages/rolldown/src/app/components/compare/SessionMeta.vue +++ b/packages/rolldown/src/app/components/compare/SessionMeta.vue @@ -1,12 +1,19 @@ diff --git a/packages/rolldown/src/app/components/compare/SingleSideRow.vue b/packages/rolldown/src/app/components/compare/SingleSideRow.vue new file mode 100644 index 00000000..c9b7aa39 --- /dev/null +++ b/packages/rolldown/src/app/components/compare/SingleSideRow.vue @@ -0,0 +1,62 @@ + + + diff --git a/packages/rolldown/src/app/components/compare/SplitRow.vue b/packages/rolldown/src/app/components/compare/SplitRow.vue new file mode 100644 index 00000000..8e999897 --- /dev/null +++ b/packages/rolldown/src/app/components/compare/SplitRow.vue @@ -0,0 +1,134 @@ + + + diff --git a/packages/rolldown/src/app/components/display/ComparisonMetric.vue b/packages/rolldown/src/app/components/display/ComparisonMetric.vue index e67bd0d7..eb49059d 100644 --- a/packages/rolldown/src/app/components/display/ComparisonMetric.vue +++ b/packages/rolldown/src/app/components/display/ComparisonMetric.vue @@ -16,7 +16,7 @@ const normalizedPercent = computed(() => { return Math.abs((props.current - props.previous) / props.previous * 100).toFixed(2) }) const trendSymbol = computed(() => isNotChanged.value ? '' : (props.current > props.previous ? '+' : '-')) -const comparisonColorClass = computed(() => isNotChanged.value ? 'text-gray-500' : (props.current > props.previous ? 'text-green-500' : 'text-red-500')) +const comparisonColorClass = computed(() => isNotChanged.value ? 'text-gray-500' : (props.current > props.previous ? 'text-red-500' : 'text-green-500'))