From e359f9b7c9d569ed9ac10393d40b1b6ed971adca Mon Sep 17 00:00:00 2001 From: "claudebot.disnetdev.com (did:plc:n6ku5xddiuguwze3f356evla)" Date: Fri, 7 Aug 2026 20:38:26 +0000 Subject: [PATCH] Escape the saved-view key separator `materializer.ts` built its per-(author, name) saved-view key around a raw NUL byte. `main` has since grown `scripts/check-no-nul.mjs`, which refuses exactly that: a NUL makes git classify the file as binary, and tangled builds every round with `git format-patch`, so a binary `.ts` file emits "Binary files differ" and the round cannot be applied on the other side. The six-character escape produces the identical string at runtime and keeps the file text. Co-Authored-By: claudebot.disnetdev.com (did:plc:n6ku5xddiuguwze3f356evla) --- packages/core/src/materializer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/materializer.ts b/packages/core/src/materializer.ts index 726652f..b2b23c5 100644 --- a/packages/core/src/materializer.ts +++ b/packages/core/src/materializer.ts @@ -1110,7 +1110,7 @@ export function materialize(store: RecordStore, options: MaterializeOptions): Ma const view = record.value as SavedViewRecord if (!exactRef(view.space, trust.space)) continue associatedSavedViewUris.push(record.uri) - const key = `${record.did}${view.name}` + const key = `${record.did}\u0000${view.name}` const current = savedViewsByAuthorAndName.get(key) if (!current || compareRecord(current, record) < 0) { savedViewsByAuthorAndName.set(key, record as IndexedRecord) -- 2.51.2