mirror of
https://github.com/thegeneralist01/archivr
synced 2026-07-22 03:05:32 +02:00
HTML entities: decode > < & etc. on sliced segments only (entity offsets index the stored string; decoding before slicing shifts them) Image lightbox: click any tweet/thread/article image to open full-screen viewer; cmd+click follows <a> to open in new tab; arrow-key + ‹ › nav; Escape closes; 1/N counter; ↗ open-in-new-tab link Multi-image grid: 2 photos → side-by-side (180px rows); 3 → left spans both rows; 4 → 2×2 (140px rows); single image unchanged Empty media grid ghost: build photos/videoItems arrays first, render .mediaGrid div only when at least one item resolved (advisory: never gate on raw media.length when map items can all return null) QT indicator: ↻ QT badge on tweet.is_quote_status === true entries Modal shrinks for short content: height: 88vh → max-height: 88vh; .preview-modal-body gets max-height: calc(88vh - 52px) so long threads still scroll (advisory: don't rely on flex:1 once parent has no fixed height) Video scrollbar leak: .preview-modal-body overflow: auto → hidden; each child (tweet-wrap, video-wrap, iframe) manages its own scroll surface Styled thin scrollbar on .preview-tweet-wrap (matches workspace rail) ArticleRenderer: cover image and body images are lightbox-clickable; opts thread through renderBlocksJSX → renderBlockJSX → renderAtomicJSX |
||
|---|---|---|
| .. | ||
| src | ||
| static | ||
| Cargo.toml | ||