fix: normalize blog markdown imports and YouTube embeds#4527
Merged
ComputelessComputer merged 3 commits intomainfrom Mar 12, 2026
Merged
fix: normalize blog markdown imports and YouTube embeds#4527ComputelessComputer merged 3 commits intomainfrom
ComputelessComputer merged 3 commits intomainfrom
Conversation
Read the current TipTap document from the file editor before save and publish so recent edits are not lost behind the debounced editor state. Also sync media-library image inserts into local editor state immediately so dirty tracking and preview stay current.
Disable caching for the draft list on both the client fetch and API response. Use the server-returned draft path and branch when updating the query cache, then refetch active draft queries to reconcile state so new posts appear immediately without a manual page refresh.
Teach the shared blog clip node to parse and round-trip saved <Clip> blocks, YouTube iframes, and pasted embed snippets through a normalized embed URL. Update Google Docs import to use the blog markdown serializer so underlined links stop turning into ++...++ and imported YouTube iframes become clip nodes. Add focused clip markdown tests for URL normalization, iframe parsing, Clip block parsing, and serialization coverage.
This was referenced Mar 11, 2026
jack-jackhui
pushed a commit
to jack-jackhui/char
that referenced
this pull request
Mar 15, 2026
* fix: save live content admin editor state Read the current TipTap document from the file editor before save and publish so recent edits are not lost behind the debounced editor state. Also sync media-library image inserts into local editor state immediately so dirty tracking and preview stay current. * fix: refresh content admin drafts after post creation Disable caching for the draft list on both the client fetch and API response. Use the server-returned draft path and branch when updating the query cache, then refetch active draft queries to reconcile state so new posts appear immediately without a manual page refresh. * fix: normalize blog markdown imports and YouTube embeds Teach the shared blog clip node to parse and round-trip saved <Clip> blocks, YouTube iframes, and pasted embed snippets through a normalized embed URL. Update Google Docs import to use the blog markdown serializer so underlined links stop turning into ++...++ and imported YouTube iframes become clip nodes. Add focused clip markdown tests for URL normalization, iframe parsing, Clip block parsing, and serialization coverage.
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.
Teach the shared blog clip node to parse and round-trip saved blocks, YouTube iframes, and pasted embed snippets through a normalized embed URL.
Update Google Docs import to use the blog markdown serializer so underlined links stop turning into ++...++ and imported YouTube iframes become clip nodes.
Add focused clip markdown tests for URL normalization, iframe parsing, Clip block parsing, and serialization coverage.
This is part 3 of 3 in a stack made with GitButler: