| author | |
| committer | |
| log | fc28abf24b034502402cba1fedf5fa38658ee2e8 |
| tree | 63b6c0043d848dae8e8dd2ce0b3f9667fc3c5737 |
| parent | 85a89868703530e03c5e79797c7b952c684bd222 |
| signature | Signed by PGP key B5690EEEBB952194 |
7 files changed, 178 insertions(+), 103 deletions(-)
apps/web/src/components/files/FilePreviewPanel.tsx+13-5| ... | @@ -7,7 +7,7 @@ import type { | ... | @@ -7,7 +7,7 @@ import type { |
| 7 | import { isWorkspaceImagePreviewPath } from "@t3tools/shared/filePreview"; | 7 | import { isWorkspaceImagePreviewPath } from "@t3tools/shared/filePreview"; |
| 8 | import { VirtualizedFile, type SelectedLineRange } from "@pierre/diffs"; | 8 | import { VirtualizedFile, type SelectedLineRange } from "@pierre/diffs"; |
| 9 | import { Editor } from "@pierre/diffs/editor"; | 9 | import { Editor } from "@pierre/diffs/editor"; |
| 10 | import { EditorProvider, File, type FileOptions, Virtualizer } from "@pierre/diffs/react"; | 10 | import { EditProvider, File, type FileOptions, Virtualizer } from "@pierre/diffs/react"; |
| 11 | import { | 11 | import { |
| 12 | isAtomCommandInterrupted, | 12 | isAtomCommandInterrupted, |
| 13 | squashAtomCommandFailure, | 13 | squashAtomCommandFailure, |
| ... | @@ -52,7 +52,7 @@ import { | ... | @@ -52,7 +52,7 @@ import { |
| 52 | } from "./fileCommentAnnotations"; | 52 | } from "./fileCommentAnnotations"; |
| 53 | import { installFileEditorDismissal } from "./fileEditorDismissal"; | 53 | import { installFileEditorDismissal } from "./fileEditorDismissal"; |
| 54 | import { LocalCommentAnnotation } from "./LocalCommentAnnotation"; | 54 | import { LocalCommentAnnotation } from "./LocalCommentAnnotation"; |
| 55 | import { projectFileCacheKey } from "./fileContentRevision"; | 55 | import { projectFileCacheKey, projectFileEditorCacheKey } from "./fileContentRevision"; |
| 56 | import { fileBreadcrumbs } from "./filePath"; | 56 | import { fileBreadcrumbs } from "./filePath"; |
| 57 | import { isMarkdownPreviewFile, setMarkdownTaskChecked } from "./filePreviewMode"; | 57 | import { isMarkdownPreviewFile, setMarkdownTaskChecked } from "./filePreviewMode"; |
| 58 | import { FileSaveCoordinator } from "./fileSaveCoordinator"; | 58 | import { FileSaveCoordinator } from "./fileSaveCoordinator"; |
| ... | @@ -364,6 +364,8 @@ function EditableFileSurface({ | ... | @@ -364,6 +364,8 @@ function EditableFileSurface({ |
| 364 | const editor = useMemo( | 364 | const editor = useMemo( |
| 365 | () => | 365 | () => |
| 366 | new Editor<FileCommentAnnotationGroup>({ | 366 | new Editor<FileCommentAnnotationGroup>({ |
| 367 | persistState: true, | ||
| 368 | persistStateStorage: "inMemory", | ||
| 367 | onChange: (file, nextLineAnnotations) => { | 369 | onChange: (file, nextLineAnnotations) => { |
| 368 | setProjectFileQueryData(environmentId, cwd, relativePath, file.contents); | 370 | setProjectFileQueryData(environmentId, cwd, relativePath, file.contents); |
| 369 | saveCoordinator.change(file.contents); | 371 | saveCoordinator.change(file.contents); |
| ... | @@ -536,7 +538,7 @@ function EditableFileSurface({ | ... | @@ -536,7 +538,7 @@ function EditableFileSurface({ |
| 536 | ); | 538 | ); |
| 537 | 539 | ||
| 538 | return ( | 540 | return ( |
| 539 | <EditorProvider editor={editor}> | 541 | <EditProvider editor={editor}> |
| 540 | <div ref={surfaceRef} className="flex min-h-0 flex-1"> | 542 | <div ref={surfaceRef} className="flex min-h-0 flex-1"> |
| 541 | <Virtualizer | 543 | <Virtualizer |
| 542 | className="file-preview-virtualizer min-h-0 flex-1 overflow-auto" | 544 | className="file-preview-virtualizer min-h-0 flex-1 overflow-auto" |
| ... | @@ -549,7 +551,13 @@ function EditableFileSurface({ | ... | @@ -549,7 +551,13 @@ function EditableFileSurface({ |
| 549 | file={{ | 551 | file={{ |
| 550 | name: relativePath, | 552 | name: relativePath, |
| 551 | contents, | 553 | contents, |
| 552 | cacheKey: projectFileCacheKey(cwd, relativePath, contents), | 554 | cacheKey: projectFileEditorCacheKey( |
| 555 | environmentId, | ||
| 556 | cwd, | ||
| 557 | relativePath, | ||
| 558 | contents, | ||
| 559 | editor.getFile(), | ||
| 560 | ), | ||
| 553 | }} | 561 | }} |
| 554 | options={{ | 562 | options={{ |
| 555 | disableFileHeader: true, | 563 | disableFileHeader: true, |
| ... | @@ -586,7 +594,7 @@ function EditableFileSurface({ | ... | @@ -586,7 +594,7 @@ function EditableFileSurface({ |
| 586 | /> | 594 | /> |
| 587 | </Virtualizer> | 595 | </Virtualizer> |
| 588 | </div> | 596 | </div> |
| 589 | </EditorProvider> | 597 | </EditProvider> |
| 590 | ); | 598 | ); |
| 591 | } | 599 | } |
| 592 | 600 |
apps/web/src/components/files/fileContentRevision.test.ts+28-1| ... | @@ -1,6 +1,10 @@ | ... | @@ -1,6 +1,10 @@ |
| 1 | import { describe, expect, it } from "vite-plus/test"; | 1 | import { describe, expect, it } from "vite-plus/test"; |
| 2 | 2 | ||
| 3 | import { fileContentRevision, projectFileCacheKey } from "./fileContentRevision"; | 3 | import { |
| 4 | fileContentRevision, | ||
| 5 | projectFileCacheKey, | ||
| 6 | projectFileEditorCacheKey, | ||
| 7 | } from "./fileContentRevision"; | ||
| 4 | 8 | ||
| 5 | describe("fileContentRevision", () => { | 9 | describe("fileContentRevision", () => { |
| 6 | it("changes for same-length edits", () => { | 10 | it("changes for same-length edits", () => { |
| ... | @@ -12,4 +16,27 @@ describe("fileContentRevision", () => { | ... | @@ -12,4 +16,27 @@ describe("fileContentRevision", () => { |
| 12 | projectFileCacheKey("/repo", "file.json", "contents"), | 16 | projectFileCacheKey("/repo", "file.json", "contents"), |
| 13 | ); | 17 | ); |
| 14 | }); | 18 | }); |
| 19 | |||
| 20 | it("keeps editor identity stable for locally edited contents", () => { | ||
| 21 | const cacheKey = projectFileEditorCacheKey("local", "/repo", "file.json", "after", undefined); | ||
| 22 | |||
| 23 | expect( | ||
| 24 | projectFileEditorCacheKey("local", "/repo", "file.json", "after edit", { | ||
| 25 | cacheKey, | ||
| 26 | contents: "after edit", | ||
| 27 | }), | ||
| 28 | ).toBe(cacheKey); | ||
| 29 | }); | ||
| 30 | |||
| 31 | it("rotates editor identity for external contents and environments", () => { | ||
| 32 | const cacheKey = projectFileEditorCacheKey("local", "/repo", "file.json", "before", undefined); | ||
| 33 | const editorFile = { cacheKey, contents: "before" }; | ||
| 34 | |||
| 35 | expect( | ||
| 36 | projectFileEditorCacheKey("local", "/repo", "file.json", "external edit", editorFile), | ||
| 37 | ).not.toBe(cacheKey); | ||
| 38 | expect(projectFileEditorCacheKey("remote", "/repo", "file.json", "before", undefined)).not.toBe( | ||
| 39 | cacheKey, | ||
| 40 | ); | ||
| 41 | }); | ||
| 15 | }); | 42 | }); |
apps/web/src/components/files/fileContentRevision.ts+18| ... | @@ -10,3 +10,21 @@ export function fileContentRevision(contents: string): string { | ... | @@ -10,3 +10,21 @@ export function fileContentRevision(contents: string): string { |
| 10 | export function projectFileCacheKey(cwd: string, relativePath: string, contents: string): string { | 10 | export function projectFileCacheKey(cwd: string, relativePath: string, contents: string): string { |
| 11 | return `${cwd}:${relativePath}:${fileContentRevision(contents)}`; | 11 | return `${cwd}:${relativePath}:${fileContentRevision(contents)}`; |
| 12 | } | 12 | } |
| 13 | |||
| 14 | interface EditorFileIdentity { | ||
| 15 | readonly cacheKey?: string; | ||
| 16 | readonly contents: string; | ||
| 17 | } | ||
| 18 | |||
| 19 | export function projectFileEditorCacheKey( | ||
| 20 | environmentId: string, | ||
| 21 | cwd: string, | ||
| 22 | relativePath: string, | ||
| 23 | contents: string, | ||
| 24 | editorFile: EditorFileIdentity | undefined, | ||
| 25 | ): string { | ||
| 26 | if (editorFile?.contents === contents && editorFile.cacheKey) { | ||
| 27 | return editorFile.cacheKey; | ||
| 28 | } | ||
| 29 | return `editor:${environmentId}:${projectFileCacheKey(cwd, relativePath, contents)}`; | ||
| 30 | } |
patches/@pierre%2Fdiffs@1.3.0-beta.10.patch created+85| ... | @@ -0,0 +1,85 @@ | ||
| 1 | diff --git a/dist/editor/editor.js b/dist/editor/editor.js | ||
| 2 | index ff78e2a..f9df318 100644 | ||
| 3 | --- a/dist/editor/editor.js | ||
| 4 | +++ b/dist/editor/editor.js | ||
| 5 | @@ -146,14 +146,11 @@ var Editor = class { | ||
| 6 | 			const file = fileInstance.__getCurrentFile?.(); | ||
| 7 | 			if (file !== void 0) requirePersistedCacheKey(file); | ||
| 8 | 		} | ||
| 9 | -		const { useTokenTransformer, enableGutterUtility, enableLineSelection, lineHoverHighlight = "disabled", ...rest } = fileInstance.options; | ||
| 10 | -		if (useTokenTransformer !== true || enableGutterUtility === true || enableLineSelection === true || lineHoverHighlight !== "disabled") { | ||
| 11 | +		const { useTokenTransformer, ...rest } = fileInstance.options; | ||
| 12 | +		if (useTokenTransformer !== true) { | ||
| 13 | 			fileInstance.setOptions({ | ||
| 14 | 				...rest, | ||
| 15 | -				useTokenTransformer: true, | ||
| 16 | -				enableGutterUtility: false, | ||
| 17 | -				enableLineSelection: false, | ||
| 18 | -				lineHoverHighlight: "disabled" | ||
| 19 | +				useTokenTransformer: true | ||
| 20 | 			}); | ||
| 21 | 			fileInstance.rerender(); | ||
| 22 | 		} | ||
| 23 | @@ -908,6 +905,7 @@ var Editor = class { | ||
| 24 | 				return lineNumber - 1; | ||
| 25 | 			}; | ||
| 26 | 			this.#editorEventDisposes.push(addEventListener(gutterEl, "pointerdown", (e) => { | ||
| 27 | +				if (this.#fileInstance?.options.enableLineSelection === true) return; | ||
| 28 | 				const gutterRow = resolveGutterTarget(e.composedPath()[0]); | ||
| 29 | 				if (gutterRow?.dataset.lineType === "change-deletion") { | ||
| 30 | 					const code = gutterRow.closest("[data-code]"); | ||
| 31 | @@ -1522,6 +1520,7 @@ var Editor = class { | ||
| 32 | 			if (gutterEl !== void 0) gutterEl.style.gridRow = "span " + gridRow; | ||
| 33 | 		} | ||
| 34 | 		fileInstance.updateRenderCache(dirtyLines, tokenizer.themeType, !didLineCountChange, didLineCountChange); | ||
| 35 | +		if (fileInstance.file !== void 0) fileInstance.file.contents = textDocument.getText(); | ||
| 36 | 		if (didLineCountChange) fileInstance.applyDocumentChange(textDocument, newLineAnnotations, shouldUpdateBuffer); | ||
| 37 | 		if (this.#isDiff && (this.#diffSyle === "unified" || didLineCountChange)) this.#resetCache(); | ||
| 38 | 		if (newLineAnnotations !== void 0) { | ||
| 39 | @@ -1788,6 +1787,7 @@ var Editor = class { | ||
| 40 | 		} | ||
| 41 | 	} | ||
| 42 | 	#setSelectedLinesSafe(range, lineNumberOnly = false) { | ||
| 43 | +		if (this.#fileInstance?.options.controlledSelection === true) return; | ||
| 44 | 		try { | ||
| 45 | 			this.#fileInstance?.setSelectedLines(range, { | ||
| 46 | 				notify: false, | ||
| 47 | diff --git a/dist/react/utils/useFileInstance.js b/dist/react/utils/useFileInstance.js | ||
| 48 | index e9f62f5..af82a46 100644 | ||
| 49 | --- a/dist/react/utils/useFileInstance.js | ||
| 50 | +++ b/dist/react/utils/useFileInstance.js | ||
| 51 | @@ -91,10 +91,7 @@ function mergeFileOptions({ options, controlledSelection, contentEditable, hasCu | ||
| 52 | 	}; | ||
| 53 | 	if (needsEditorOptions) merged = { | ||
| 54 | 		...merged, | ||
| 55 | -		useTokenTransformer: true, | ||
| 56 | -		enableGutterUtility: false, | ||
| 57 | -		enableLineSelection: false, | ||
| 58 | -		lineHoverHighlight: "disabled" | ||
| 59 | +		useTokenTransformer: true | ||
| 60 | 	}; | ||
| 61 | 	return merged; | ||
| 62 | } | ||
| 63 | diff --git a/package.json b/package.json | ||
| 64 | index ff61c90..1e170e5 100644 | ||
| 65 | --- a/package.json | ||
| 66 | +++ b/package.json | ||
| 67 | @@ -55,6 +55,18 @@ | ||
| 68 | "./worker/worker-portable.js": { | ||
| 69 | "types": "./dist/worker/worker-portable.d.ts", | ||
| 70 | "import": "./dist/worker/worker-portable.js" | ||
| 71 | + }, | ||
| 72 | + "./types": { | ||
| 73 | + "types": "./dist/types.d.ts", | ||
| 74 | + "import": "./dist/types.js" | ||
| 75 | + }, | ||
| 76 | + "./utils/getFiletypeFromFileName": { | ||
| 77 | + "types": "./dist/utils/getFiletypeFromFileName.d.ts", | ||
| 78 | + "import": "./dist/utils/getFiletypeFromFileName.js" | ||
| 79 | + }, | ||
| 80 | + "./utils/parsePatchFiles": { | ||
| 81 | + "types": "./dist/utils/parsePatchFiles.d.ts", | ||
| 82 | + "import": "./dist/utils/parsePatchFiles.js" | ||
| 83 | } | ||
| 84 | }, | ||
| 85 | "publishConfig": { | ||
patches/@pierre%2Fdiffs@1.3.0-beta.5.patch deleted-69| ... | @@ -1,69 +0,0 @@ | ||
| 1 | diff --git a/dist/editor/editor.js b/dist/editor/editor.js | ||
| 2 | index e8013fc6eb6f243a6c912facf3fc0319ac66a8d0..80c82df4cdeb828bd331f5ec2f443d216bedc304 100644 | ||
| 3 | --- a/dist/editor/editor.js | ||
| 4 | +++ b/dist/editor/editor.js | ||
| 5 | @@ -77,15 +77,12 @@ var Editor = class { | ||
| 6 | 		this.#options = options; | ||
| 7 | 	} | ||
| 8 | 	edit(component) { | ||
| 9 | -		const { useTokenTransformer, enableGutterUtility, enableLineSelection, expandUnchanged, diffStyle, lineHoverHighlight,...rest } = component.options; | ||
| 10 | +		const { useTokenTransformer, expandUnchanged, diffStyle,...rest } = component.options; | ||
| 11 | 		const isDiff = component.type === "file-diff"; | ||
| 12 | -		if (useTokenTransformer !== true || enableGutterUtility === true || enableLineSelection === true || lineHoverHighlight !== "disabled" || expandUnchanged !== true && isDiff || diffStyle === "unified" && isDiff) { | ||
| 13 | +		if (useTokenTransformer !== true || expandUnchanged !== true && isDiff || diffStyle === "unified" && isDiff) { | ||
| 14 | 			component.setOptions({ | ||
| 15 | 				...rest, | ||
| 16 | 				useTokenTransformer: true, | ||
| 17 | -				enableGutterUtility: false, | ||
| 18 | -				enableLineSelection: false, | ||
| 19 | -				lineHoverHighlight: "disabled", | ||
| 20 | 				expandUnchanged: true, | ||
| 21 | 				diffStyle: "split" | ||
| 22 | 			}); | ||
| 23 | @@ -511,6 +508,7 @@ var Editor = class { | ||
| 24 | 				return lineNumber - 1; | ||
| 25 | 			}; | ||
| 26 | 			this.#editorEventDisposes.push(addEventListener(gutterEl, "pointerdown", (e) => { | ||
| 27 | +				if (this.#fileInstance?.options.enableLineSelection === true) return; | ||
| 28 | 				const textDocument = this.#textDocument; | ||
| 29 | 				const lineIndex = resolveEditableLine(resolveGutterTarget(e.composedPath()[0])); | ||
| 30 | 				if (lineIndex === void 0 || textDocument === void 0) return; | ||
| 31 | diff --git a/dist/react/utils/useFileInstance.js b/dist/react/utils/useFileInstance.js | ||
| 32 | index cb8e2026fb5d7a19f489c0a2402efbcb7dff3322..510fad6364d4a2214c7dd65fe2b114f1cce0c815 100644 | ||
| 33 | --- a/dist/react/utils/useFileInstance.js | ||
| 34 | +++ b/dist/react/utils/useFileInstance.js | ||
| 35 | @@ -92,10 +92,7 @@ function mergeFileOptions({ options, controlledSelection, contentEditable, hasCu | ||
| 36 | 	}; | ||
| 37 | 	if (needsEditorOptions) merged = { | ||
| 38 | 		...merged, | ||
| 39 | -		useTokenTransformer: true, | ||
| 40 | -		enableGutterUtility: false, | ||
| 41 | -		enableLineSelection: false, | ||
| 42 | -		lineHoverHighlight: "disabled" | ||
| 43 | +		useTokenTransformer: true | ||
| 44 | 	}; | ||
| 45 | 	return merged; | ||
| 46 | } | ||
| 47 | diff --git a/package.json b/package.json | ||
| 48 | index d1558633de87044b7aa96cff09443db11f163cec..c0b16f0a0bec6fba2026f24f38b2c0a8fa06af7c 100644 | ||
| 49 | --- a/package.json | ||
| 50 | +++ b/package.json | ||
| 51 | @@ -55,6 +55,18 @@ | ||
| 52 | "./worker/worker-portable.js": { | ||
| 53 | "types": "./dist/worker/worker-portable.d.ts", | ||
| 54 | "import": "./dist/worker/worker-portable.js" | ||
| 55 | + }, | ||
| 56 | + "./types": { | ||
| 57 | + "types": "./dist/types.d.ts", | ||
| 58 | + "import": "./dist/types.js" | ||
| 59 | + }, | ||
| 60 | + "./utils/getFiletypeFromFileName": { | ||
| 61 | + "types": "./dist/utils/getFiletypeFromFileName.d.ts", | ||
| 62 | + "import": "./dist/utils/getFiletypeFromFileName.js" | ||
| 63 | + }, | ||
| 64 | + "./utils/parsePatchFiles": { | ||
| 65 | + "types": "./dist/utils/parsePatchFiles.d.ts", | ||
| 66 | + "import": "./dist/utils/parsePatchFiles.js" | ||
| 67 | } | ||
| 68 | }, | ||
| 69 | "publishConfig": { | ||
pnpm-lock.yaml+32-26| ... | @@ -19,8 +19,8 @@ catalogs: | ... | @@ -19,8 +19,8 @@ catalogs: |
| 19 | specifier: 1.8.0 | 19 | specifier: 1.8.0 |
| 20 | version: 1.8.0 | 20 | version: 1.8.0 |
| 21 | '@pierre/diffs': | 21 | '@pierre/diffs': |
| 22 | specifier: 1.3.0-beta.5 | 22 | specifier: 1.3.0-beta.10 |
| 23 | version: 1.3.0-beta.5 | 23 | version: 1.3.0-beta.10 |
| 24 | '@typescript/native-preview': | 24 | '@typescript/native-preview': |
| 25 | specifier: 7.0.0-dev.20260604.1 | 25 | specifier: 7.0.0-dev.20260604.1 |
| 26 | version: 7.0.0-dev.20260604.1 | 26 | version: 7.0.0-dev.20260604.1 |
| ... | @@ -75,7 +75,7 @@ patchedDependencies: | ... | @@ -75,7 +75,7 @@ patchedDependencies: |
| 75 | '@expo/metro-config@56.0.14': 8cb08b5bb7051ed9d2dbe46a2c293c5a1e17f1bd6ddf30de27909e18c921ff46 | 75 | '@expo/metro-config@56.0.14': 8cb08b5bb7051ed9d2dbe46a2c293c5a1e17f1bd6ddf30de27909e18c921ff46 |
| 76 | '@ff-labs/fff-node@0.9.4': 2b16019ce7ab61aec6478dd02f79ef468cc1d5c51e9d00764f7d2ab8167210c8 | 76 | '@ff-labs/fff-node@0.9.4': 2b16019ce7ab61aec6478dd02f79ef468cc1d5c51e9d00764f7d2ab8167210c8 |
| 77 | '@legendapp/list@3.2.0': 9203ec3db86574a31e157a265cefd8997b259cc420a0c4c61c580c80ed8cf78d | 77 | '@legendapp/list@3.2.0': 9203ec3db86574a31e157a265cefd8997b259cc420a0c4c61c580c80ed8cf78d |
| 78 | '@pierre/diffs@1.3.0-beta.5': 7cb6da88544119adda056b2f46f43956f99326227732da0b345081e285a6c53a | 78 | '@pierre/diffs@1.3.0-beta.10': 7ef7cb0cbabb17c15cdb137554068b36f15f6f5265e73fb51452aa3380db91aa |
| 79 | '@react-native-menu/menu@2.0.0': 5ea3ae4bf1d9baf5443b65c269bb09621c27a68d556f713778f37b1e8d46aaae | 79 | '@react-native-menu/menu@2.0.0': 5ea3ae4bf1d9baf5443b65c269bb09621c27a68d556f713778f37b1e8d46aaae |
| 80 | '@react-navigation/native-stack@7.17.6': c7fc101b78d434904425e5a24c22fb0042298dec6f807250486e784f3c717273 | 80 | '@react-navigation/native-stack@7.17.6': c7fc101b78d434904425e5a24c22fb0042298dec6f807250486e784f3c717273 |
| 81 | effect@4.0.0-beta.102: 71215759e1ac0a7f65d7b75d816986687ae6c3a6cba02d928d184ca71790d488 | 81 | effect@4.0.0-beta.102: 71215759e1ac0a7f65d7b75d816986687ae6c3a6cba02d928d184ca71790d488 |
| ... | @@ -222,7 +222,7 @@ importers: | ... | @@ -222,7 +222,7 @@ importers: |
| 222 | version: 1.8.0 | 222 | version: 1.8.0 |
| 223 | '@pierre/diffs': | 223 | '@pierre/diffs': |
| 224 | specifier: 'catalog:' | 224 | specifier: 'catalog:' |
| 225 | version: 1.3.0-beta.5(patch_hash=7cb6da88544119adda056b2f46f43956f99326227732da0b345081e285a6c53a)(@shikijs/themes@4.2.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) | 225 | version: 1.3.0-beta.10(patch_hash=7ef7cb0cbabb17c15cdb137554068b36f15f6f5265e73fb51452aa3380db91aa)(@shikijs/themes@4.2.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) |
| 226 | '@react-native-menu/menu': | 226 | '@react-native-menu/menu': |
| 227 | specifier: ^2.0.0 | 227 | specifier: ^2.0.0 |
| 228 | version: 2.0.0(patch_hash=5ea3ae4bf1d9baf5443b65c269bb09621c27a68d556f713778f37b1e8d46aaae)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | 228 | version: 2.0.0(patch_hash=5ea3ae4bf1d9baf5443b65c269bb09621c27a68d556f713778f37b1e8d46aaae)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| ... | @@ -466,7 +466,7 @@ importers: | ... | @@ -466,7 +466,7 @@ importers: |
| 466 | version: 1.15.13 | 466 | version: 1.15.13 |
| 467 | '@pierre/diffs': | 467 | '@pierre/diffs': |
| 468 | specifier: 'catalog:' | 468 | specifier: 'catalog:' |
| 469 | version: 1.3.0-beta.5(patch_hash=7cb6da88544119adda056b2f46f43956f99326227732da0b345081e285a6c53a)(@shikijs/themes@4.3.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) | 469 | version: 1.3.0-beta.10(patch_hash=7ef7cb0cbabb17c15cdb137554068b36f15f6f5265e73fb51452aa3380db91aa)(@shikijs/themes@4.3.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) |
| 470 | effect: | 470 | effect: |
| 471 | specifier: 4.0.0-beta.102 | 471 | specifier: 4.0.0-beta.102 |
| 472 | version: 4.0.0-beta.102(patch_hash=71215759e1ac0a7f65d7b75d816986687ae6c3a6cba02d928d184ca71790d488) | 472 | version: 4.0.0-beta.102(patch_hash=71215759e1ac0a7f65d7b75d816986687ae6c3a6cba02d928d184ca71790d488) |
| ... | @@ -551,7 +551,7 @@ importers: | ... | @@ -551,7 +551,7 @@ importers: |
| 551 | version: 0.41.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(yjs@13.6.31) | 551 | version: 0.41.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(yjs@13.6.31) |
| 552 | '@pierre/diffs': | 552 | '@pierre/diffs': |
| 553 | specifier: 'catalog:' | 553 | specifier: 'catalog:' |
| 554 | version: 1.3.0-beta.5(patch_hash=7cb6da88544119adda056b2f46f43956f99326227732da0b345081e285a6c53a)(@shikijs/themes@4.3.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) | 554 | version: 1.3.0-beta.10(patch_hash=7ef7cb0cbabb17c15cdb137554068b36f15f6f5265e73fb51452aa3380db91aa)(@shikijs/themes@4.3.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) |
| 555 | '@pierre/trees': | 555 | '@pierre/trees': |
| 556 | specifier: 1.0.0-beta.4 | 556 | specifier: 1.0.0-beta.4 |
| 557 | version: 1.0.0-beta.4(react-dom@19.2.6(react@19.2.6))(react@19.2.6) | 557 | version: 1.0.0-beta.4(react-dom@19.2.6(react@19.2.6))(react@19.2.6) |
| ... | @@ -3584,20 +3584,20 @@ packages: | ... | @@ -3584,20 +3584,20 @@ packages: |
| 3584 | resolution: {integrity: sha512-ODOov0sGMJMf3jPonOkgGqPknTsu+DdQ7kD++gz8aI+aFMOMHFbWAA2taqXXVTdP+OTOQR/znGvSpmkeI0WTYQ==} | 3584 | resolution: {integrity: sha512-ODOov0sGMJMf3jPonOkgGqPknTsu+DdQ7kD++gz8aI+aFMOMHFbWAA2taqXXVTdP+OTOQR/znGvSpmkeI0WTYQ==} |
| 3585 | engines: {node: '>=14.18.0'} | 3585 | engines: {node: '>=14.18.0'} |
| 3586 | 3586 | ||
| 3587 | '@pierre/diffs@1.3.0-beta.5': | 3587 | '@pierre/diffs@1.3.0-beta.10': |
| 3588 | resolution: {integrity: sha512-d7449IY6Phcg9LCRLbPxhsxn6Bv4KoaP/vPyZtGu2uR1SFsSJPQcRoPf8lzyobNGKD0GZGuhgHW5LrOlilFo7w==} | 3588 | resolution: {integrity: sha512-efyFM9GRfI6WkmHJP0CnZBopuM8yCwGqIKbZHoe1D5PV15VDkr7Vpi8EZt40AYrN1km//utQtYhHDSwt2KwjSg==} |
| 3589 | peerDependencies: | 3589 | peerDependencies: |
| 3590 | react: ^18.3.1 || ^19.0.0 | 3590 | react: ^18.3.1 || ^19.0.0 |
| 3591 | react-dom: ^18.3.1 || ^19.0.0 | 3591 | react-dom: ^18.3.1 || ^19.0.0 |
| 3592 | 3592 | ||
| 3593 | '@pierre/theme@1.0.3': | 3593 | '@pierre/theme@1.1.0': |
| 3594 | resolution: {integrity: sha512-sWHv11TMoqKxKDgTIk5VbhQjdPhs8DCcBxbjh3mRlS3YOM/OcrWoGX6MM8eBGn9cUu3M46Py0JnxsG2nJaFTuA==} | 3594 | resolution: {integrity: sha512-GC2OWTAfTIIWWYhPCygwG8t2EtePQkRfON4MI2rwIkJylmiyqIttJID2dCL8sUD8cNdEvYkEyfEHHKMeCiDLoQ==} |
| 3595 | engines: {vscode: ^1.0.0} | 3595 | engines: {vscode: ^1.0.0} |
| 3596 | 3596 | ||
| 3597 | '@pierre/theming@0.0.1': | 3597 | '@pierre/theming@0.0.2': |
| 3598 | resolution: {integrity: sha512-1thlEtJbqdyLzc1ZS2KQa1q7FzDGHT4dTEdKHoyQjOMeWWOmbVG5/ndEfOKfAb5Fzkz8cNJrOjFLiZoDH/A03A==} | 3598 | resolution: {integrity: sha512-QM1M4stXfnzfaE8I8YbjXSApV8c+2dBsXJj8eYg9WTpBR/cTmCZIcfGnN4p13iRrYu2Br/R/OJfEL7uR8Qjctw==} |
| 3599 | peerDependencies: | 3599 | peerDependencies: |
| 3600 | '@pierre/theme': ^1.0.0 | 3600 | '@pierre/theme': ^1.1.0 |
| 3601 | '@shikijs/themes': ^3.0.0 || ^4.0.0 | 3601 | '@shikijs/themes': ^3.0.0 || ^4.0.0 |
| 3602 | react: ^18.3.1 || ^19.0.0 | 3602 | react: ^18.3.1 || ^19.0.0 |
| 3603 | react-dom: ^18.3.1 || ^19.0.0 | 3603 | react-dom: ^18.3.1 || ^19.0.0 |
| ... | @@ -6104,6 +6104,10 @@ packages: | ... | @@ -6104,6 +6104,10 @@ packages: |
| 6104 | resolution: {integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==} | 6104 | resolution: {integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==} |
| 6105 | engines: {node: '>=0.3.1'} | 6105 | engines: {node: '>=0.3.1'} |
| 6106 | 6106 | ||
| 6107 | diff@9.0.0: | ||
| 6108 | resolution: {integrity: sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==} | ||
| 6109 | engines: {node: '>=0.3.1'} | ||
| 6110 | |||
| 6107 | dir-compare@4.2.0: | 6111 | dir-compare@4.2.0: |
| 6108 | resolution: {integrity: sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==} | 6112 | resolution: {integrity: sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==} |
| 6109 | 6113 | ||
| ... | @@ -13569,12 +13573,12 @@ snapshots: | ... | @@ -13569,12 +13573,12 @@ snapshots: |
| 13569 | tslib: 2.8.1 | 13573 | tslib: 2.8.1 |
| 13570 | webcrypto-core: 1.9.2 | 13574 | webcrypto-core: 1.9.2 |
| 13571 | 13575 | ||
| 13572 | '@pierre/diffs@1.3.0-beta.5(patch_hash=7cb6da88544119adda056b2f46f43956f99326227732da0b345081e285a6c53a)(@shikijs/themes@4.2.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': | 13576 | '@pierre/diffs@1.3.0-beta.10(patch_hash=7ef7cb0cbabb17c15cdb137554068b36f15f6f5265e73fb51452aa3380db91aa)(@shikijs/themes@4.2.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': |
| 13573 | dependencies: | 13577 | dependencies: |
| 13574 | '@pierre/theme': 1.0.3 | 13578 | '@pierre/theme': 1.1.0 |
| 13575 | '@pierre/theming': 0.0.1(@pierre/theme@1.0.3)(@shikijs/themes@4.2.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(shiki@4.2.0) | 13579 | '@pierre/theming': 0.0.2(@pierre/theme@1.1.0)(@shikijs/themes@4.2.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(shiki@4.2.0) |
| 13576 | '@shikijs/transformers': 4.2.0 | 13580 | '@shikijs/transformers': 4.2.0 |
| 13577 | diff: 8.0.3 | 13581 | diff: 9.0.0 |
| 13578 | hast-util-to-html: 9.0.5 | 13582 | hast-util-to-html: 9.0.5 |
| 13579 | lru_map: 0.4.1 | 13583 | lru_map: 0.4.1 |
| 13580 | react: 19.2.3 | 13584 | react: 19.2.3 |
| ... | @@ -13583,12 +13587,12 @@ snapshots: | ... | @@ -13583,12 +13587,12 @@ snapshots: |
| 13583 | transitivePeerDependencies: | 13587 | transitivePeerDependencies: |
| 13584 | - '@shikijs/themes' | 13588 | - '@shikijs/themes' |
| 13585 | 13589 | ||
| 13586 | '@pierre/diffs@1.3.0-beta.5(patch_hash=7cb6da88544119adda056b2f46f43956f99326227732da0b345081e285a6c53a)(@shikijs/themes@4.3.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': | 13590 | '@pierre/diffs@1.3.0-beta.10(patch_hash=7ef7cb0cbabb17c15cdb137554068b36f15f6f5265e73fb51452aa3380db91aa)(@shikijs/themes@4.3.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': |
| 13587 | dependencies: | 13591 | dependencies: |
| 13588 | '@pierre/theme': 1.0.3 | 13592 | '@pierre/theme': 1.1.0 |
| 13589 | '@pierre/theming': 0.0.1(@pierre/theme@1.0.3)(@shikijs/themes@4.3.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(shiki@4.2.0) | 13593 | '@pierre/theming': 0.0.2(@pierre/theme@1.1.0)(@shikijs/themes@4.3.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(shiki@4.2.0) |
| 13590 | '@shikijs/transformers': 4.2.0 | 13594 | '@shikijs/transformers': 4.2.0 |
| 13591 | diff: 8.0.3 | 13595 | diff: 9.0.0 |
| 13592 | hast-util-to-html: 9.0.5 | 13596 | hast-util-to-html: 9.0.5 |
| 13593 | lru_map: 0.4.1 | 13597 | lru_map: 0.4.1 |
| 13594 | react: 19.2.6 | 13598 | react: 19.2.6 |
| ... | @@ -13597,19 +13601,19 @@ snapshots: | ... | @@ -13597,19 +13601,19 @@ snapshots: |
| 13597 | transitivePeerDependencies: | 13601 | transitivePeerDependencies: |
| 13598 | - '@shikijs/themes' | 13602 | - '@shikijs/themes' |
| 13599 | 13603 | ||
| 13600 | '@pierre/theme@1.0.3': {} | 13604 | '@pierre/theme@1.1.0': {} |
| 13601 | 13605 | ||
| 13602 | '@pierre/theming@0.0.1(@pierre/theme@1.0.3)(@shikijs/themes@4.2.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(shiki@4.2.0)': | 13606 | '@pierre/theming@0.0.2(@pierre/theme@1.1.0)(@shikijs/themes@4.2.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(shiki@4.2.0)': |
| 13603 | optionalDependencies: | 13607 | optionalDependencies: |
| 13604 | '@pierre/theme': 1.0.3 | 13608 | '@pierre/theme': 1.1.0 |
| 13605 | '@shikijs/themes': 4.2.0 | 13609 | '@shikijs/themes': 4.2.0 |
| 13606 | react: 19.2.3 | 13610 | react: 19.2.3 |
| 13607 | react-dom: 19.2.3(react@19.2.3) | 13611 | react-dom: 19.2.3(react@19.2.3) |
| 13608 | shiki: 4.2.0 | 13612 | shiki: 4.2.0 |
| 13609 | 13613 | ||
| 13610 | '@pierre/theming@0.0.1(@pierre/theme@1.0.3)(@shikijs/themes@4.3.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(shiki@4.2.0)': | 13614 | '@pierre/theming@0.0.2(@pierre/theme@1.1.0)(@shikijs/themes@4.3.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(shiki@4.2.0)': |
| 13611 | optionalDependencies: | 13615 | optionalDependencies: |
| 13612 | '@pierre/theme': 1.0.3 | 13616 | '@pierre/theme': 1.1.0 |
| 13613 | '@shikijs/themes': 4.3.0 | 13617 | '@shikijs/themes': 4.3.0 |
| 13614 | react: 19.2.6 | 13618 | react: 19.2.6 |
| 13615 | react-dom: 19.2.6(react@19.2.6) | 13619 | react-dom: 19.2.6(react@19.2.6) |
| ... | @@ -16379,6 +16383,8 @@ snapshots: | ... | @@ -16379,6 +16383,8 @@ snapshots: |
| 16379 | 16383 | ||
| 16380 | diff@8.0.3: {} | 16384 | diff@8.0.3: {} |
| 16381 | 16385 | ||
| 16386 | diff@9.0.0: {} | ||
| 16387 | |||
| 16382 | dir-compare@4.2.0: | 16388 | dir-compare@4.2.0: |
| 16383 | dependencies: | 16389 | dependencies: |
| 16384 | minimatch: 3.1.5 | 16390 | minimatch: 3.1.5 |
pnpm-workspace.yaml+2-2| ... | @@ -41,7 +41,7 @@ catalog: | ... | @@ -41,7 +41,7 @@ catalog: |
| 41 | "@effect/vitest": 4.0.0-beta.102 | 41 | "@effect/vitest": 4.0.0-beta.102 |
| 42 | "@noble/curves": 1.9.1 | 42 | "@noble/curves": 1.9.1 |
| 43 | "@noble/hashes": 1.8.0 | 43 | "@noble/hashes": 1.8.0 |
| 44 | "@pierre/diffs": 1.3.0-beta.5 | 44 | "@pierre/diffs": 1.3.0-beta.10 |
| 45 | "@types/node": 24.12.4 | 45 | "@types/node": 24.12.4 |
| 46 | "@typescript/native-preview": 7.0.0-dev.20260604.1 | 46 | "@typescript/native-preview": 7.0.0-dev.20260604.1 |
| 47 | effect: 4.0.0-beta.102 | 47 | effect: 4.0.0-beta.102 |
| ... | @@ -128,7 +128,7 @@ patchedDependencies: | ... | @@ -128,7 +128,7 @@ patchedDependencies: |
| 128 | "@expo/metro-config@56.0.14": patches/@expo%2Fmetro-config@56.0.14.patch | 128 | "@expo/metro-config@56.0.14": patches/@expo%2Fmetro-config@56.0.14.patch |
| 129 | "@ff-labs/fff-node@0.9.4": patches/@ff-labs__fff-node@0.9.4.patch | 129 | "@ff-labs/fff-node@0.9.4": patches/@ff-labs__fff-node@0.9.4.patch |
| 130 | "@legendapp/list@3.2.0": patches/@legendapp__list@3.2.0.patch | 130 | "@legendapp/list@3.2.0": patches/@legendapp__list@3.2.0.patch |
| 131 | "@pierre/diffs@1.3.0-beta.5": patches/@pierre%2Fdiffs@1.3.0-beta.5.patch | 131 | "@pierre/diffs@1.3.0-beta.10": patches/@pierre%2Fdiffs@1.3.0-beta.10.patch |
| 132 | "@react-native-menu/menu@2.0.0": patches/@react-native-menu__menu@2.0.0.patch | 132 | "@react-native-menu/menu@2.0.0": patches/@react-native-menu__menu@2.0.0.patch |
| 133 | "@react-navigation/native-stack@7.17.6": patches/@react-navigation%2Fnative-stack@7.17.6.patch | 133 | "@react-navigation/native-stack@7.17.6": patches/@react-navigation%2Fnative-stack@7.17.6.patch |
| 134 | effect@4.0.0-beta.102: patches/effect@4.0.0-beta.102.patch | 134 | effect@4.0.0-beta.102: patches/effect@4.0.0-beta.102.patch |