Repository navigation
perf: preserve plugin compilation caching across reloads - #444
Merged
Merged
Conversation
Deploying podnotes with
|
| Latest commit: |
1599607
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://8506e39f.podnotes.pages.dev |
| Branch Preview URL: | https://perf-startup-private-feeds.podnotes.pages.dev |
This was referenced Oct 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Restore PodNotes' compiled-code reuse when Obsidian reloads the renderer. A
String.rawtagged template introduced by #428 disables V8's eval cache for the entire bundle. Replace it with an exactly equivalent ordinary string and cover four hostname normalization cases in the privacy tests.On Linux with Obsidian 1.14.4, the startup-report entry after the isolated runner's setup/reload measured 13.10 ms before -> 3.95 ms after, across ten paired runs on the current base including #439. This is a repeated-load improvement. Fresh-process runs showed no demonstrated speedup, correcting the earlier cold-start interpretation.
Measurement report and load-time table | Raw reports, traces, scripts, and check logs
Verification
npm run lint,npm run format:check,npm run typecheck,npm run build: pass.npm run test: 1,984 tests pass; Svelte checks have 0 errors and 0 warnings.npm run test:tooling: 11 tests pass.npm run docs:build: pass, including internal links and 112 legacy fragments.npm run size: 292,929 raw bytes / 93,106 gzip bytes, within both budgets.npm run test:e2e: all 89 tests pass on Obsidian 1.14.4 and again withPODNOTES_OBSIDIAN_APP=/opt/Obsidian/obsidianon 1.13.7, Linux. Both commands exit 0.Both independent reviewers, GPT-6 Astra and Claude Fable, confirmed the mechanism and string equivalence. A mutation that removes the address fallback fails exactly the four new tests. Runtime coverage uses the isolated vault and synthetic feeds, including
http://priv3.supercast.com:<port>/feeds/PRIV3_E2E_SENTINEL/feed.xml, and asserts privacy in data.json, cache keys, and note links.Example startup report screenshot, from a separate final launch; not a benchmark sample.
Release impact
None. Privacy behavior, storage shape, save timing, public API, and URI handling are unchanged. Existing terminal-dot alias gap #441 and a bundle guard against tagged templates #443 are separate follow-ups.
Docs at release
None. No documented behavior changes.
Note
Replace tagged template in
redactPrivateFeedAddressesregex to preserve plugin cachingredactPrivateFeedAddressestest suite in privateFeedUrl.test.ts with cases for quoted aliases of percent-encoded, Unicode/punycode, decimal IPv4, and expanded IPv6 hostnames, verifying feed URLs are redacted while episode media URLs stay unchanged.Macroscope summarized 1599607.