feat(viewer): Markdown and plain-text documents are drawn as text
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
A text/markdown file (or text/x-markdown) is drawn as formatted text by egui_commonmark, with no image loading, so a document never makes the viewer read a file or the network; any other text/* type as its selectable text. UTF-8 only (a leading byte-order mark dropped), at most 2 MiB; past that or not UTF-8, the viewer says why. The documents page's tile shows the text's first lines. The SHA-256 row is cut to its column (it ran off the panel and widened the page under it). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T3gXMVt7XJPi6ens1or9Dj
This commit is contained in:
6 files changed
+263
-7
No files matched your search
@@ -157,6 +157,18 @@ fn tile(
|
||||
.image(tex.id(), img_rect, uv, egui::Color32::WHITE);
|
||||
}
|
||||
}
|
||||
Render::Text { text, .. } => {
|
||||
// The first lines of the text, as written, clipped to the thumb.
|
||||
let head: String = text.lines().take(14).collect::<Vec<_>>().join("\n");
|
||||
let galley =
|
||||
ui.painter()
|
||||
.layout(head, theme::regular(10.5), p.muted, thumb.width() - 16.0);
|
||||
ui.painter().with_clip_rect(thumb.shrink(4.0)).galley(
|
||||
thumb.min + vec2(8.0, 8.0),
|
||||
galley,
|
||||
p.muted,
|
||||
);
|
||||
}
|
||||
Render::Loading => {
|
||||
ui.painter().text(
|
||||
thumb.center(),
|
||||
@@ -273,7 +285,7 @@ fn detail(ui: &mut Ui, b: &Books, a: &Attachment, shell: &mut Shell<'_>) {
|
||||
ui.label(fmt::timestamp(&a.created_at));
|
||||
ui.end_row();
|
||||
k(ui, "SHA-256");
|
||||
widgets::copyable(
|
||||
widgets::copyable_truncated(
|
||||
ui,
|
||||
RichText::new(&a.blob_sha).monospace().size(11.5),
|
||||
&a.blob_sha,
|
||||
|
||||
Reference in new issue
Block a user