From 87685633696f88f08877129472ccbaf7553fee41 Mon Sep 17 00:00:00 2001 From: Julien Huang Date: Thu, 13 Nov 2025 18:46:45 +0100 Subject: [PATCH 1/4] feat(hydration): improve diff UI --- .github/assets/devtools-hydration.png | Bin 21291 -> 21486 bytes client/app/components/HydrationIssue.vue | 116 ++--- package.json | 3 + pnpm-lock.yaml | 512 +++++++++++++++++------ 4 files changed, 438 insertions(+), 193 deletions(-) diff --git a/.github/assets/devtools-hydration.png b/.github/assets/devtools-hydration.png index 069aae4df789fddd516e60b17b482ae87d32ea3b..a008a7bcde856726e5238315df2dd27950a5c57c 100644 GIT binary patch literal 21486 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

LV!|)Bs8cGaKD=h`BOBEVbJqs7E2_JABeY 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� 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 D?p3J~ diff --git a/client/app/components/HydrationIssue.vue b/client/app/components/HydrationIssue.vue index 6e67282..d920125 100644 --- a/client/app/components/HydrationIssue.vue +++ b/client/app/components/HydrationIssue.vue @@ -1,6 +1,8 @@ diff --git a/package.json b/package.json index 3b8d861..79ccf3d 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@nuxt/devtools-kit": "^3.0.0", "@nuxt/kit": "^4.1.2", "diff": "^8.0.2", - "h3": "1.15.4", + "h3": "^1.15.4", "magic-string": "^0.30.19", "nitropack": "^2.12.6", "shiki": "^3.13.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7c4eee8..ea4c82c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,7 +18,7 @@ importers: specifier: ^8.0.2 version: 8.0.2 h3: - specifier: 1.15.4 + specifier: ^1.15.4 version: 1.15.4 magic-string: specifier: ^0.30.19 From 5b84bceb135b032415004c3198502f0732961104 Mon Sep 17 00:00:00 2001 From: Julien Huang Date: Fri, 14 Nov 2025 19:38:57 +0100 Subject: [PATCH 3/4] lint --- client/app/components/HydrationIssue.vue | 52 +++++++++++++++++++----- 1 file changed, 42 insertions(+), 10 deletions(-) diff --git a/client/app/components/HydrationIssue.vue b/client/app/components/HydrationIssue.vue index 4f59204..780d421 100644 --- a/client/app/components/HydrationIssue.vue +++ b/client/app/components/HydrationIssue.vue @@ -54,7 +54,10 @@ function copy(text: string) { From 225bec420b026dda4f56dd0691da342a171320cf Mon Sep 17 00:00:00 2001 From: Julien Huang Date: Fri, 14 Nov 2025 20:28:05 +0100 Subject: [PATCH 4/4] chore: move diff to dev deps --- package.json | 2 +- pnpm-lock.yaml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 79ccf3d..9d6b287 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,6 @@ "dependencies": { "@nuxt/devtools-kit": "^3.0.0", "@nuxt/kit": "^4.1.2", - "diff": "^8.0.2", "h3": "^1.15.4", "magic-string": "^0.30.19", "nitropack": "^2.12.6", @@ -48,6 +47,7 @@ "web-vitals": "^5.1.0" }, "devDependencies": { + "diff": "^8.0.2", "@shikijs/transformers": "^3.15.0", "sass-embedded": "^1.93.3", "@nuxt/devtools": "^3.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ea4c82c..2f305bd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,9 +14,6 @@ importers: '@nuxt/kit': specifier: ^4.1.2 version: 4.2.1(magicast@0.5.0) - diff: - specifier: ^8.0.2 - version: 8.0.2 h3: specifier: ^1.15.4 version: 1.15.4 @@ -72,6 +69,9 @@ importers: changelogen: specifier: ^0.6.0 version: 0.6.2(magicast@0.5.0) + diff: + specifier: ^8.0.2 + version: 8.0.2 eslint: specifier: ^9.36.0 version: 9.39.1(jiti@2.6.1)