Repository navigation
feat(media): render hydrated article, gallery and livestream cards - #265
Merged
Merged
Conversation
A link whose external view carries associatedRefs now gets the richer card its canonical record describes: an article with publication and reading time, a gallery with up to four pictures, or a livestream marked live or ended. The first ref is kept during feed flatten; the card's height is reserved from it before any fetch, so the list does not jump when the answer lands. atproto/external_card.c asks the public AppView (the PDS proxy needs auth, and the image client deliberately has no token) on a loader thread, once per url and canonical URI, with both cards and failed answers cached. The plain card draws until a result arrives. Fixtures and snapshot frames cover all three shapes; unit tests pin the parser, URL builder and cache. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
Document the AppView hydration path beside the plain link card and add one TV frame each for an article, a gallery and a livestream. The guide screenshot map now names those frames, and the fixture count grows with the three new posts, which refreshes the existing timeline counts. README, parity and AGENTS describe the new card path and its limits: public AppView, one request per link, host-tested only. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
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.
What this changes
Closes #102. A link card whose
external.associatedRefsnames a record is now hydrated once, on first draw, through the public AppView'sapp.bsky.embed.getEmbedExternalView, and composed into a richer card:The answer and any failed answer are cached for the process, so scrolling does not retry a link. Unhydrated links and posts without a ref keep the existing
external#viewcard.The data path lives in
src/atproto/external_card.c; Wolfram parses the three view shapes, Cobalt only consumes them. Drawing stays insrc/ui/postcard.cbeside the existing image and external rows.Verification
make -C tests test— unit tests and snapshot frames, including new article, gallery and livestream frames and fixture posts.python3 tools/check-guide.py— guide screenshot map matches the files.bash tools/check-parity.sh— parity row parses.makehost build andDEVKITPRO=/opt/devkitpro DEVKITARM=... make 3dsremote build.Docs
README.md,CHANGELOG.md,docs/PARITY.md,docs/guide.mdandAGENTS.mddescribe the hydration path, its one-request-per-link cache and its limits. Three TV guide screenshots are added, and the fixture-count drift refreshes the existing timeline frames.Checklist
CI gateandflow / conventions)