From f809abe291c725f951e859aae533a24fa34cab67 Mon Sep 17 00:00:00 2001 From: Anthony Fitzpatrick <11820350+anthonyfitzpatrick@users.noreply.github.com> Date: Fri, 17 Jul 2026 21:53:07 +0200 Subject: [PATCH] Release 0.10.3 --- manifest.json | 2 +- package-lock.json | 4 ++-- package.json | 2 +- tests/run.ts | 4 ++-- versions.json | 3 ++- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/manifest.json b/manifest.json index e4af149..8bb19a3 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "manuscript-compiler", "name": "Manuscript Compiler", - "version": "0.10.2", + "version": "0.10.3", "minAppVersion": "1.5.0", "description": "Compile publishable manuscript content to DOCX, ODT, EPUB, HTML, Markdown, or XML files.", "author": "Anthony Fitzpatrick", diff --git a/package-lock.json b/package-lock.json index d49eaa4..b9b85ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "obsidian-manuscript-compiler", - "version": "0.10.2", + "version": "0.10.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "obsidian-manuscript-compiler", - "version": "0.10.2", + "version": "0.10.3", "license": "MIT", "dependencies": { "fflate": "^0.8.3" diff --git a/package.json b/package.json index 0399a7d..8548466 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obsidian-manuscript-compiler", - "version": "0.10.2", + "version": "0.10.3", "description": "Validate, preview, and compile Obsidian book manuscripts to DOCX, ODT, EPUB, HTML, Markdown, or XML.", "main": "main.js", "scripts": { diff --git a/tests/run.ts b/tests/run.ts index 91120a1..62b38c6 100644 --- a/tests/run.ts +++ b/tests/run.ts @@ -523,7 +523,7 @@ test("stale prepared source keeps the workspace openable for Refresh Preview", a test("main delegates orchestration and ExportCoordinator is the sole exporter owner", async () => { const mainSource = await readFile(path.join("src", "main.ts"), "utf8"); const coordinatorSource = await readFile(path.join("src", "export-coordinator.ts"), "utf8"); const otherProduction = (await Promise.all(["compile-command-service.ts", "compile-modal.ts", "validation.ts"].map((file) => readFile(path.join("src", file), "utf8")))).join("\n"); assert.doesNotMatch(mainSource, /new (DocxMemoryExporter|OdtExporter|EpubExporter|HtmlExporter|MarkdownExporter|XmlExporter)|recordSuccess\(|recordFailure\(|calculateSourceFingerprint/); assert.match(mainSource, /new ExportCoordinator/); assert.match(coordinatorSource, /exportPreparedSession\(session: PreparedCompileSession/); assert.match(coordinatorSource, /EXPORTERS\[format\]/); assert.doesNotMatch(otherProduction, /EXPORTERS\[/); assert.doesNotMatch(coordinatorSource, /ScannedBook/); }); -test("0.10.2 production source has one preparation/export route and no external execution, network, telemetry, or plugin API access", async () => { +test("0.10.3 production source has one preparation/export route and no external execution, network, telemetry, or plugin API access", async () => { const files = await sourceFiles("src"); const entries = await Promise.all(files.map(async (file) => [file, await readFile(file, "utf8")] as const)); const source = entries.map(([, content]) => content).join("\n"); assert.deepEqual(entries.filter(([, content]) => /new VaultScanner\(/.test(content)).map(([file]) => file), [path.join("src", "compile-preparation.ts")]); assert.deepEqual(entries.filter(([, content]) => /new ExportCoordinator\(/.test(content)).map(([file]) => file), [path.join("src", "main.ts")]); @@ -547,7 +547,7 @@ test("plugin CSS selectors are owned, theme-safe, and retain accessibility modes assert.doesNotMatch(css, /#[0-9a-f]{3,8}\b|!important/i); assert.match(css, /@media \(forced-colors: active\)/); assert.match(css, /@media \(prefers-reduced-motion: reduce\)/); assert.match(css, /:focus-visible/); }); -test("0.10.2 version metadata, bundled branding, and release package allowlist are consistent", async () => { const manifest = JSON.parse(await readFile("manifest.json", "utf8")); const packageJson = JSON.parse(await readFile("package.json", "utf8")); const lock = JSON.parse(await readFile("package-lock.json", "utf8")); const versions = JSON.parse(await readFile("versions.json", "utf8")); const packaging = await readFile(path.join("scripts", "package.mjs"), "utf8"); const readme = await readFile("README.md", "utf8"); assert.equal(manifest.version, "0.10.2"); assert.equal(packageJson.version, manifest.version); assert.equal(lock.version, manifest.version); assert.equal(lock.packages[""].version, manifest.version); assert.equal(versions[manifest.version], manifest.minAppVersion); assert.equal(manifest.authorUrl, "https://wolf359.app"); assert.equal(manifest.fundingUrl, "https://buymeacoffee.com/wolf359pressab"); assert.match(packaging, /const required = \["main\.js", "manifest\.json", "styles\.css"\]/); assert.doesNotMatch(packaging, /const required = \[[^\]]*logo\.svg/); assert.match(packaging, /const repositoryLogo = "logo\.svg"/); assert.match(readme, / { const manifest = JSON.parse(await readFile("manifest.json", "utf8")); const packageJson = JSON.parse(await readFile("package.json", "utf8")); const lock = JSON.parse(await readFile("package-lock.json", "utf8")); const versions = JSON.parse(await readFile("versions.json", "utf8")); const packaging = await readFile(path.join("scripts", "package.mjs"), "utf8"); const readme = await readFile("README.md", "utf8"); assert.equal(manifest.version, "0.10.3"); assert.equal(packageJson.version, manifest.version); assert.equal(lock.version, manifest.version); assert.equal(lock.packages[""].version, manifest.version); assert.equal(versions[manifest.version], manifest.minAppVersion); assert.equal(manifest.authorUrl, "https://wolf359.app"); assert.equal(manifest.fundingUrl, "https://buymeacoffee.com/wolf359pressab"); assert.match(packaging, /const required = \["main\.js", "manifest\.json", "styles\.css"\]/); assert.doesNotMatch(packaging, /const required = \[[^\]]*logo\.svg/); assert.match(packaging, /const repositoryLogo = "logo\.svg"/); assert.match(readme, / { for (const candidate of ["data.json", ".obsidian/plugins/manuscript-compiler/data.json", "nested/manuscript-compiler/data.json"]) { await execFileAsync("git", ["check-ignore", "--no-index", "--quiet", candidate]); diff --git a/versions.json b/versions.json index b73c6bf..aa9c1ab 100644 --- a/versions.json +++ b/versions.json @@ -12,5 +12,6 @@ "0.9.3": "1.5.0", "0.10.0": "1.5.0", "0.10.1": "1.5.0", - "0.10.2": "1.5.0" + "0.10.2": "1.5.0", + "0.10.3": "1.5.0" }