From 87964339c0d3771c74bc52fc559a8b22ede289fd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Jul 2026 17:20:26 +0000 Subject: [PATCH 1/2] Bump @pierre/diffs from 1.3.0-beta.9 to 1.3.0-beta.10 Bumps @pierre/diffs from 1.3.0-beta.9 to 1.3.0-beta.10. --- updated-dependencies: - dependency-name: "@pierre/diffs" dependency-version: 1.3.0-beta.10 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pnpm-lock.yaml | 105 +++++--------------------------------------- pnpm-workspace.yaml | 2 +- 2 files changed, 13 insertions(+), 94 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 66d80b64..e507c8f5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,8 +19,8 @@ catalogs: specifier: 0.13.2 version: 0.13.2 '@pierre/diffs': - specifier: 1.3.0-beta.9 - version: 1.3.0-beta.9 + specifier: 1.3.0-beta.10 + version: 1.3.0-beta.10 '@types/bun': specifier: ^1.3.11 version: 1.3.14 @@ -198,7 +198,7 @@ importers: version: 1.18.3 '@pierre/diffs': specifier: 'catalog:' - version: 1.3.0-beta.9(@shikijs/themes@4.3.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 1.3.0-beta.10(@shikijs/themes@4.3.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) effect: specifier: 4.0.0-beta.97 version: 4.0.0-beta.97(patch_hash=181986b14edb53e2f3c82527e8e5a9f7675db32427ed6940ee3da64e2f5968e2) @@ -283,7 +283,7 @@ importers: version: 0.47.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.2)(yjs@13.6.31) '@pierre/diffs': specifier: 'catalog:' - version: 1.3.0-beta.9(@shikijs/themes@4.3.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 1.3.0-beta.10(@shikijs/themes@4.3.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tanstack/react-pacer': specifier: ^0.22.1 version: 0.22.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7) @@ -2444,8 +2444,8 @@ packages: resolution: {integrity: sha512-ODOov0sGMJMf3jPonOkgGqPknTsu+DdQ7kD++gz8aI+aFMOMHFbWAA2taqXXVTdP+OTOQR/znGvSpmkeI0WTYQ==} engines: {node: '>=14.18.0'} - '@pierre/diffs@1.3.0-beta.9': - resolution: {integrity: sha512-XoSLsyHA9UjNb/5UGQoKN1Bqma+ecHHaaM2T2edYdeJ67iS27qivWNoKq+uWjKhRzZEB4JQQRzlXxKy79UvY9A==} + '@pierre/diffs@1.3.0-beta.10': + resolution: {integrity: sha512-efyFM9GRfI6WkmHJP0CnZBopuM8yCwGqIKbZHoe1D5PV15VDkr7Vpi8EZt40AYrN1km//utQtYhHDSwt2KwjSg==} peerDependencies: react: ^18.3.1 || ^19.0.0 react-dom: ^18.3.1 || ^19.0.0 @@ -2610,50 +2610,26 @@ packages: '@shikijs/core@3.23.0': resolution: {integrity: sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==} - '@shikijs/core@4.2.0': - resolution: {integrity: sha512-Hc87Ab1Ld/vEbZRCbwx344I5v+4RU8CVToUTRkqXL1+TjbuOp9U5Xa0M23V4GEWHxVn+yO5otb+HkQVm3ptWQQ==} - engines: {node: '>=20'} - '@shikijs/core@4.3.1': resolution: {integrity: sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA==} engines: {node: '>=20'} - '@shikijs/engine-javascript@4.2.0': - resolution: {integrity: sha512-fjETeq1k5ffyXqRgS6+3hpvqseLalp1kjNfRbXpUgWR8FpZ1CmQfiNHovc5lncYjt/Vg5JK/WJEmLahjwMa0og==} - engines: {node: '>=20'} - '@shikijs/engine-javascript@4.3.1': resolution: {integrity: sha512-JBItcnPuYq7jVJdZo/vMj94r+szT7XEjHFX+mvFDGSEIbVAXAGyHAHzhbWzpGOwYidCZrErJLLgn2PVeiokHnQ==} engines: {node: '>=20'} - '@shikijs/engine-oniguruma@4.2.0': - resolution: {integrity: sha512-hTorK1dffPkpbMUk6Z+828PgRo7d07HbnizoP0hNPFjhxMHctj0Px/qoHeGMYafc6ju+u9iMldN4JbVzNQM++g==} - engines: {node: '>=20'} - '@shikijs/engine-oniguruma@4.3.1': resolution: {integrity: sha512-OXyNMzg0pews+msMj4cHeqT4xiYKKvbnn6VbdAXxfoFl3SSx4fJTc8FadECuc5/H9p3BzhNAoAUXKwAu9rWYhg==} engines: {node: '>=20'} - '@shikijs/langs@4.2.0': - resolution: {integrity: sha512-bwrVRlJ0wUhZxAbVdvBbv2TTC9yLsh4C/IO5Ofz0T8MQntgDvyVnkbjw9vi50r1kx7RCIJdnJnjZAwmAsXFLZQ==} - engines: {node: '>=20'} - '@shikijs/langs@4.3.1': resolution: {integrity: sha512-m0l9nsDqgBHvbZbk7A0/kXz/impK3uB/c6rAn6Gpg/uPtdZRQ+alsN/17MU5thb68XTj/4DxkZAotrM0GGSpDQ==} engines: {node: '>=20'} - '@shikijs/primitive@4.2.0': - resolution: {integrity: sha512-NOq+DtUkVBJtZMVXL5A0vI0Xk8nvDYaXetFHSJFlOqjDZIVhIPRYFdGkSoElDqNuegikcc3A76SNUa8dTqtAYA==} - engines: {node: '>=20'} - '@shikijs/primitive@4.3.1': resolution: {integrity: sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A==} engines: {node: '>=20'} - '@shikijs/themes@4.2.0': - resolution: {integrity: sha512-RX8IHYeLv8Cu2W6ruc3RxUqWn0IYCqSrMBzi/uRGAmfyDNOnNO5BF/Px7o97n4XTpmFTo5GbRaazuOWj+2ak2w==} - engines: {node: '>=20'} - '@shikijs/themes@4.3.1': resolution: {integrity: sha512-dgpoJ4WqNi2yTmizQHBJ5zcX6j2lE6icN/0yt4l1kkf16jrY/pwPLoTb1ETsWMz0OBLf9ZNvwmxft+cH+N9qSA==} engines: {node: '>=20'} @@ -2664,10 +2640,6 @@ packages: '@shikijs/types@3.23.0': resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} - '@shikijs/types@4.2.0': - resolution: {integrity: sha512-VT/MKtlpOhEPZloSH3Pb9WCZEBDoQVMa9jedp5UAwmJOar1DVc9DRODAxmYPW9M93IK4ryuqRejFfmlvlVDemw==} - engines: {node: '>=20'} - '@shikijs/types@4.3.1': resolution: {integrity: sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g==} engines: {node: '>=20'} @@ -5418,10 +5390,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@4.2.0: - resolution: {integrity: sha512-hjNax6o/ylDy9lefQEaSDtzaT3iVNtZ3WmpQnbuQNoG4xvnSKf2kSKbihZVO4JRG1TTMejs7CmNRYlWgAL66pQ==} - engines: {node: '>=20'} - shiki@4.3.1: resolution: {integrity: sha512-oR+qDVi2OjX1tmDpyv+3KviX01KzO6Af+0NNnKnsp9491UEGz2YpxTuJboS/6VhYpTdqzmuJBuiTlrAWWJAssw==} engines: {node: '>=20'} @@ -7787,29 +7755,29 @@ snapshots: tslib: 2.8.1 webcrypto-core: 1.9.2 - '@pierre/diffs@1.3.0-beta.9(@shikijs/themes@4.3.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@pierre/diffs@1.3.0-beta.10(@shikijs/themes@4.3.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@pierre/theme': 1.1.0 - '@pierre/theming': 0.0.2(@pierre/theme@1.1.0)(@shikijs/themes@4.3.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(shiki@4.2.0) + '@pierre/theming': 0.0.2(@pierre/theme@1.1.0)(@shikijs/themes@4.3.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(shiki@4.3.1) '@shikijs/transformers': 3.23.0 diff: 9.0.0 hast-util-to-html: 9.0.5 lru_map: 0.4.1 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - shiki: 4.2.0 + shiki: 4.3.1 transitivePeerDependencies: - '@shikijs/themes' '@pierre/theme@1.1.0': {} - '@pierre/theming@0.0.2(@pierre/theme@1.1.0)(@shikijs/themes@4.3.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(shiki@4.2.0)': + '@pierre/theming@0.0.2(@pierre/theme@1.1.0)(@shikijs/themes@4.3.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(shiki@4.3.1)': optionalDependencies: '@pierre/theme': 1.1.0 '@shikijs/themes': 4.3.1 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - shiki: 4.2.0 + shiki: 4.3.1 '@polka/url@1.0.0-next.29': {} @@ -7900,14 +7868,6 @@ snapshots: '@types/hast': 3.0.5 hast-util-to-html: 9.0.5 - '@shikijs/core@4.2.0': - dependencies: - '@shikijs/primitive': 4.2.0 - '@shikijs/types': 4.2.0 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.5 - hast-util-to-html: 9.0.5 - '@shikijs/core@4.3.1': dependencies: '@shikijs/primitive': 4.3.1 @@ -7916,52 +7876,27 @@ snapshots: '@types/hast': 3.0.5 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@4.2.0': - dependencies: - '@shikijs/types': 4.2.0 - '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.6 - '@shikijs/engine-javascript@4.3.1': dependencies: '@shikijs/types': 4.3.1 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.6 - '@shikijs/engine-oniguruma@4.2.0': - dependencies: - '@shikijs/types': 4.2.0 - '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/engine-oniguruma@4.3.1': dependencies: '@shikijs/types': 4.3.1 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@4.2.0': - dependencies: - '@shikijs/types': 4.2.0 - '@shikijs/langs@4.3.1': dependencies: '@shikijs/types': 4.3.1 - '@shikijs/primitive@4.2.0': - dependencies: - '@shikijs/types': 4.2.0 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.5 - '@shikijs/primitive@4.3.1': dependencies: '@shikijs/types': 4.3.1 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 - '@shikijs/themes@4.2.0': - dependencies: - '@shikijs/types': 4.2.0 - '@shikijs/themes@4.3.1': dependencies: '@shikijs/types': 4.3.1 @@ -7976,11 +7911,6 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 - '@shikijs/types@4.2.0': - dependencies: - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.5 - '@shikijs/types@4.3.1': dependencies: '@shikijs/vscode-textmate': 10.0.2 @@ -9739,7 +9669,7 @@ snapshots: hast-util-to-html@9.0.5: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/unist': 3.0.3 ccount: 2.0.1 comma-separated-tokens: 2.0.3 @@ -11320,17 +11250,6 @@ snapshots: shebang-regex@3.0.0: {} - shiki@4.2.0: - dependencies: - '@shikijs/core': 4.2.0 - '@shikijs/engine-javascript': 4.2.0 - '@shikijs/engine-oniguruma': 4.2.0 - '@shikijs/langs': 4.2.0 - '@shikijs/themes': 4.2.0 - '@shikijs/types': 4.2.0 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - shiki@4.3.1: dependencies: '@shikijs/core': 4.3.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 0150a871..6ba2ff6f 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -15,7 +15,7 @@ catalog: "@effect/sql-sqlite-bun": 4.0.0-beta.97 "@effect/tsgo": 0.13.2 "@effect/vitest": 4.0.0-beta.97 - "@pierre/diffs": 1.3.0-beta.9 + "@pierre/diffs": 1.3.0-beta.10 "@types/bun": ^1.3.11 "@types/node": ^24.10.13 "@typescript/native-preview": 7.0.0-dev.20260707.2 From bd530111fe50cbf73afcf0a4020d05ba9c804cdd Mon Sep 17 00:00:00 2001 From: badcuban <108198679+badcuban@users.noreply.github.com> Date: Thu, 16 Jul 2026 13:23:13 -0400 Subject: [PATCH 2/2] Migrate to pierre diffs 1.3.0-beta.10 editor API EditorState no longer carries the file; use editor.getText() for document contents. EditorProvider is renamed EditProvider. --- .../components/file-viewer/FileEditorPane.tsx | 8 +++--- .../file-viewer/FileViewerPierre.browser.tsx | 28 +++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/apps/web/src/components/file-viewer/FileEditorPane.tsx b/apps/web/src/components/file-viewer/FileEditorPane.tsx index ae8136a2..061288bb 100644 --- a/apps/web/src/components/file-viewer/FileEditorPane.tsx +++ b/apps/web/src/components/file-viewer/FileEditorPane.tsx @@ -1,7 +1,7 @@ /** * Editable surface for the file viewer's edit mode. * - * Wraps a `contentEditable` pierre File in an `EditorProvider`. The attach is + * Wraps a `contentEditable` pierre File in an `EditProvider`. The attach is * deferred to a post-mount effect: attaching during mount is unsafe under * StrictMode (the doubled mount effect runs edit → cleanUp → edit and * pierre's re-attach render sync short-circuits on cached content, leaving @@ -18,7 +18,7 @@ import { useEffect, useMemo, useRef, useState } from "react"; import { useQueryClient } from "@tanstack/react-query"; import { Editor } from "@pierre/diffs/editor"; -import { EditorProvider, File as PierreFile } from "@pierre/diffs/react"; +import { EditProvider, File as PierreFile } from "@pierre/diffs/react"; import { useFileViewerStore, type FileViewerContext } from "../../fileViewerStore"; import { useTheme } from "../../hooks/useTheme"; @@ -134,7 +134,7 @@ export function FileEditorPane({ ); return ( - + - + ); } diff --git a/apps/web/src/components/file-viewer/FileViewerPierre.browser.tsx b/apps/web/src/components/file-viewer/FileViewerPierre.browser.tsx index 25017178..20951166 100644 --- a/apps/web/src/components/file-viewer/FileViewerPierre.browser.tsx +++ b/apps/web/src/components/file-viewer/FileViewerPierre.browser.tsx @@ -7,7 +7,7 @@ import { render } from "vitest-browser-react"; import type { SelectedLineRange } from "@pierre/diffs"; import { getFiletypeFromFileName, preloadHighlighter } from "@pierre/diffs"; import { Editor } from "@pierre/diffs/editor"; -import { EditorProvider, File as PierreFile } from "@pierre/diffs/react"; +import { EditProvider, File as PierreFile } from "@pierre/diffs/react"; import { DIFF_PANEL_UNSAFE_CSS } from "../DiffPanel.styles"; import { DiffWorkerPoolProvider } from "../DiffWorkerPoolProvider"; @@ -218,7 +218,7 @@ describe("FileViewer pierre integration", () => { }); }); -// Mirrors the editable-file wiring (EditorProvider + contentEditable File) so +// Mirrors the editable-file wiring (EditProvider + contentEditable File) so // editor attachment regressions surface here instead of in the app. function EditableHarness({ path, @@ -231,7 +231,7 @@ function EditableHarness({ }) { return ( - +
-
+
); } @@ -255,7 +255,7 @@ async function waitForEditorDocument(editor: Editor, timeoutMs = 15_0 const deadline = performance.now() + timeoutMs; const ready = () => { try { - return editor.getState().file != null; + return typeof editor.getText() === "string"; } catch { return false; } @@ -350,7 +350,7 @@ describe("FileViewer pierre editing", () => { function WrapHarness({ wrap }: { wrap: boolean }) { return ( - +
{ }} />
-
+
); } @@ -381,12 +381,12 @@ describe("FileViewer pierre editing", () => { true, ); await settle(100); - expect(editor.getState().file.contents).toContain("const w = 7;"); + expect(editor.getText()).toContain("const w = 7;"); screen.rerender(); await settle(); - expect(editor.getState().file.contents).toContain("const w = 7;"); + expect(editor.getText()).toContain("const w = 7;"); expect(editor.canUndo).toBe(true); screen.unmount(); @@ -413,11 +413,11 @@ describe("FileViewer pierre editing", () => { await waitForEditorDocument(editor); const deadline = performance.now() + 15_000; - while (!editor.getState().file.contents.includes("start!") && performance.now() < deadline) { + while (!editor.getText().includes("start!") && performance.now() < deadline) { await settle(150); } - expect(editor.getState().file.contents).toContain("start!\nnext"); + expect(editor.getText()).toContain("start!\nnext"); expect(editor.getState().selections?.[0]).toMatchObject({ start: { line: 0, character: 6 }, end: { line: 0, character: 6 }, @@ -443,7 +443,7 @@ describe("FileViewer pierre editing", () => { editorRef = editor; return ( - +
{ options={{ disableFileHeader: true, theme: "pierre-dark", themeType: "dark" }} />
-
+
); } @@ -477,7 +477,7 @@ describe("FileViewer pierre editing", () => { true, ); await settle(100); - expect(editor.getState().file.contents).toContain("const s = 9;"); + expect(editor.getText()).toContain("const s = 9;"); screen.unmount(); });