From b3d868ca5ba735f641bbfc8ba43dc64b724617ae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jun 2026 16:14:03 +0000 Subject: [PATCH 1/4] ci: Bump actions/attest-build-provenance from 2 to 4 Bumps [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance) from 2 to 4. - [Release notes](https://github.com/actions/attest-build-provenance/releases) - [Changelog](https://github.com/actions/attest-build-provenance/blob/main/RELEASE.md) - [Commits](https://github.com/actions/attest-build-provenance/compare/v2...v4) --- updated-dependencies: - dependency-name: actions/attest-build-provenance dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7063951..c0e33fb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -82,7 +82,7 @@ jobs: # this workflow, so users can verify provenance with `gh attestation verify`. - name: Attest build provenance if: steps.guard.outputs.exists == 'false' - uses: actions/attest-build-provenance@v2 + uses: actions/attest-build-provenance@v4 with: subject-path: | main.js From 977b43c461bac3603c7e4589e950870b7cb323b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Jul 2026 16:14:01 +0000 Subject: [PATCH 2/4] ci: Bump actions/setup-node from 6 to 7 Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6 to 7. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v6...v7) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 14b0af8..75d3a3a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,7 @@ jobs: uses: actions/checkout@v7 - name: Set up Node.js - uses: actions/setup-node@v6 + uses: actions/setup-node@v7 with: node-version: "20" cache: "npm" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7063951..9609b38 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -33,7 +33,7 @@ jobs: uses: actions/checkout@v7 - name: Set up Node.js - uses: actions/setup-node@v6 + uses: actions/setup-node@v7 with: node-version: "20" cache: "npm" From 59c268061aacf6bad6ab5f987047332a5193d0d0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 25 Jul 2026 14:42:56 +0000 Subject: [PATCH 3/4] ci: Bump fast-uri from 3.1.2 to 3.1.4 Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.2 to 3.1.4. - [Release notes](https://github.com/fastify/fast-uri/releases) - [Commits](https://github.com/fastify/fast-uri/compare/v3.1.2...v3.1.4) --- updated-dependencies: - dependency-name: fast-uri dependency-version: 3.1.4 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 54c47e0..8c991ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2571,9 +2571,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", - "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.4.tgz", + "integrity": "sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==", "dev": true, "funding": [ { From 5ef10eaf2884a62ed05d2ec502760feb8cd6d3ba Mon Sep 17 00:00:00 2001 From: Sangjoon Han Date: Tue, 28 Jul 2026 21:39:40 +0900 Subject: [PATCH 4/4] fix: draw the inert footnote underline with a border, not text-decoration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Obsidian's plugin CSS check maps the entire `text-decoration` family onto a single caniuse feature that Chrome supports only partially, so the longhands 1.2.1 switched to warn exactly like the shorthand did. Use a dotted `border-bottom` (plus `padding-bottom` for the offset) instead — same cue, CSS1 properties nothing has ever qualified. `scripts/validate.mjs` now fails on any `text-decoration*` declaration in styles.css: the reviewer's check runs on their side only, which is how the same warning came back a second time. Release 1.2.2. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_019Xs98arTAdcat1h9pkz7Vy --- CHANGELOG.md | 24 +++++++++++++++++++++++- manifest.json | 2 +- scripts/validate.mjs | 38 ++++++++++++++++++++++++++++++++++++++ styles.css | 14 ++++++++------ versions.json | 3 ++- 5 files changed, 72 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d825ba6..33690c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.2.2] - 2026-07-28 + +The remaining warning from Obsidian's plugin review. No change in behaviour. + +### Fixed + +- The inert footnote marker's dotted underline is drawn with a `border-bottom` + instead of `text-decoration`. 1.2.1 moved the rule to the + `text-decoration-line` / `text-decoration-style` longhands on the assumption + that only the multi-value shorthand was flagged; Obsidian's CSS check + actually maps the entire `text-decoration` family onto a single browser + feature that Chrome supports only partially, so every spelling of it warns. + The marker looks the same. + +### Internal — recurrence prevention + +- `scripts/validate.mjs` now fails the build if `styles.css` declares any + `text-decoration*` property. The reviewer's CSS check runs on their side + only, so the previous fix could not be verified before submission and the + same warning came back a second time; the local gate now carries the rule. + ## [1.2.1] - 2026-07-28 Compliance fixes raised by Obsidian's plugin review. No change in behaviour. @@ -215,7 +236,8 @@ Initial public release. mode), not only in Reading view. The table being actively edited is left untouched. -[Unreleased]: https://github.com/Post-Math/Lookout/compare/1.2.1...HEAD +[Unreleased]: https://github.com/Post-Math/Lookout/compare/1.2.2...HEAD +[1.2.2]: https://github.com/Post-Math/Lookout/compare/1.2.1...1.2.2 [1.2.1]: https://github.com/Post-Math/Lookout/compare/1.2.0...1.2.1 [1.2.0]: https://github.com/Post-Math/Lookout/compare/1.1.7...1.2.0 [#28]: https://github.com/Post-Math/Lookout/issues/28 diff --git a/manifest.json b/manifest.json index af9869b..06f31f8 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "lookout", "name": "Lookout", - "version": "1.2.1", + "version": "1.2.2", "minAppVersion": "1.6.6", "description": "Survey wide content instead of scrolling sideways. Pan and zoom Mermaid diagrams (wheel, Ctrl+wheel, or buttons), fit them to the frame, and open diagrams or wide tables full-screen.", "author": "Post-Math", diff --git a/scripts/validate.mjs b/scripts/validate.mjs index deefcde..dd088e9 100644 --- a/scripts/validate.mjs +++ b/scripts/validate.mjs @@ -56,6 +56,44 @@ if (manifest && versions) { } } +/* + * styles.css: properties Obsidian's plugin CSS check rejects. + * + * That check maps each declared property to a caniuse feature and warns when + * the feature is not *fully* supported by the Chrome in the plugin's + * `minAppVersion`. The whole `text-decoration` family — shorthand and + * longhands alike — resolves to one feature that Chrome only partially + * supports, so no spelling of it passes; 1.2.1 shipped the longhands believing + * only the shorthand was flagged, and got the same warning back. Use a + * `border-bottom` for underline-like rules instead. + * + * This is a targeted guard, not a reimplementation of the reviewer's check: + * it encodes the one family we have actually been flagged on. + */ +const CSS_BANNED = [ + [ + /(^|[;{\s])text-decoration(-line|-style|-color|-thickness|-skip|-skip-ink)?\s*:/gm, + "Obsidian's CSS check flags the whole text-decoration family as only " + + "partially supported. Use `border-bottom: 1px dotted currentColor` " + + "(plus `padding-bottom` for offset) instead.", + ], +]; +if (existsSync("styles.css")) { + const css = readFileSync("styles.css", "utf8"); + // Comments carry the explanation of *why* these are banned; don't self-trip. + // Blank them out newline-for-newline so reported line numbers stay true. + const code = css.replace(/\/\*[\s\S]*?\*\//g, (c) => c.replace(/[^\n]/g, " ")); + let clean = true; + for (const [re, why] of CSS_BANNED) { + for (const m of code.matchAll(re)) { + const line = code.slice(0, m.index).split("\n").length; + fail(`styles.css:${line} uses \`${m[0].trim().replace(/:$/, "")}\`. ${why}`); + clean = false; + } + } + if (clean) ok("styles.css uses no unsupported browser features"); +} + if (failed) { console.error("\nValidation failed."); process.exit(1); diff --git a/styles.css b/styles.css index 54e4b2e..0e51ab0 100644 --- a/styles.css +++ b/styles.css @@ -446,12 +446,14 @@ .lookout-table-fs-scroll .lookout-fn-unresolved { color: var(--text-muted); cursor: default; - /* Longhands, not the `text-decoration` shorthand: Obsidian's plugin CSS check - flags the multi-value shorthand as only partially supported at our - `minAppVersion`, while these two have been safe for far longer. */ - text-decoration-line: underline; - text-decoration-style: dotted; - text-underline-offset: 2px; + /* A border, not `text-decoration` — and not its longhands either. Obsidian's + plugin CSS check groups the whole `text-decoration` family under one + caniuse feature that Chrome only *partially* supports, so every spelling of + it is flagged; the dotted bottom border draws the same cue out of CSS1 + properties nothing has ever qualified. `padding-bottom` stands in for the + underline offset. */ + border-bottom: 1px dotted currentColor; + padding-bottom: 1px; } .lookout-fs-close { diff --git a/versions.json b/versions.json index fc76cd2..5193ec6 100644 --- a/versions.json +++ b/versions.json @@ -7,5 +7,6 @@ "1.1.6": "1.0.0", "1.1.7": "1.0.0", "1.2.0": "1.6.6", - "1.2.1": "1.6.6" + "1.2.1": "1.6.6", + "1.2.2": "1.6.6" }