Fix #745: CLI empty title, metaTags, description#795
Open
gavriilfakih wants to merge 1 commit into
Open
Conversation
The CLI passed `doc.documentElement` to `new DefuddleClass(...)`. On linkedom, the element root does not expose `<head>` meta tags, so `defuddleResult.title`, `description`, `published`, `metaTags`, etc. all come back empty—which is exactly what obsidianmd#745 reported. Passing the full `doc` fixes it and aligns `api.ts` with the equivalent call in `template-integration.test.ts`.
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
Closes #745. The CLI’s
clip()passesdoc.documentElementto Defuddle, but on linkedom the element root does not expose<head>meta tags, so every field sourced from meta (title, description, published, metaTags,{{meta:name:citation_*}},{{meta:property:og:*}}) comes back empty.Passing the full
docfixes it. This is already howsrc/utils/template-integration.test.tsinstantiates Defuddle, so this change bringsapi.tsin line with the tests.Repro
bash npm run build:cli node dist/cli.cjs https://example.com -t template.json Before: empty title, empty content, empty meta lookups.
After: populated as expected.
Scope
clip()is only called fromsrc/cli.ts. The browser extension goes through its own path (popup.ts/content.ts) and does not use this function, so this is CLI-only.Tests
The 560 passing tests still pass. The 3 pre-existing timezone-related fixture failures (YouTube, edge-cases, minimal) are unrelated—they also fail on
mainwithout this change, and there's an open PR (#750) addressing them.