mirror of
https://github.com/israerusan/patina.git
synced 2026-07-22 08:31:33 +00:00
Excluded folders excluded nothing but the queue and the CSV. The setting promises "never scored or listed", but isExcluded() was consulted only inside buildQueue: DecayIndex.rebuild() scored every markdown file, so the file explorer still dimmed Archive/2019 Retro.md and the status bar still read "Decay 91 · decayed" on it. Skip excluded paths in rebuild() — every surface reads the index, so that is the one place the rule belongs. Excluded notes still count as inbound LINK SOURCES: a link from the Archive is still a link, and dropping it would make everything the Archive cites look more abandoned than it is. The MutationObserver watched document.body with subtree:true. Obsidian rewrites the editor DOM on every keystroke, so it fired continuously while the user typed and ran a document-wide querySelectorAll every 150ms. Observe the file explorer's container instead (DESIGN 8.1), re-resolved on layout-change so an explorer that is opened, closed, or dragged to the other sidebar is still followed. A non-string licenseKey in data.json crashed onload(): TypeError: this.settings.licenseKey.trim is not a function thrown from refreshLicense(), two lines into onload() — so the plugin never loaded, its settings tab never rendered, and the bad value could not be fixed from inside Obsidian. loadSettings() coerced isPro, excludeFolders, snoozedUntil, halfLives, weights and bandThresholds, and not one string. Coerce the strings and the arithmetic numbers (snoozeDays: "x" made Date.now() + NaN, a snooze that silently never happened). styles.css now carries the block EngineInstallModal's header requires every vendoring plugin to paste. The modal is unreachable in 1.0.0 and tree-shakes out, but whoever wires the download must not inherit an unstyled consent dialog — that is the one screen that asks the user to let this add-on run a binary. A test parses the class names out of the modal source and asserts each has a rule. community-plugins.json staged "author": "saiken" against a manifest that says Israel Avila. That file is the PR body for obsidian-releases, submitted verbatim. Engine binaries are now re-hashed before every spawn — see the shared core commit 43ba784. InstalledInfo.sha256 was the digest of an archive that install() deletes, so it could never guard anything; the digest of the executable itself is recorded and checked in resolveExecutable(), and a swapped binary is refused. Regression tests, each proved to fail against the unfixed source: decay-index "an excluded note is not in the index" explorer-decorator "the observer must watch the file explorer's container" settings-coercion "settings.licenseKey must be a string after load" manifest-contract "the staged author must be the manifest author" Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R3f6GZ2A8FbZerhJEpJQBE |
||
|---|---|---|
| .. | ||
| install-vault.mjs | ||
| sync-shared.mjs | ||