Skip to content

Commit 78b7245

Browse files
authored
Add webview-cli project (#278)
* Add webview-cli project * Quote webview-cli description to fix YAML parse error * Decode GitHub README as UTF-8 to fix mojibake * Render GitHub README newlines as soft breaks like GitHub
1 parent 4f13157 commit 78b7245

3 files changed

Lines changed: 20 additions & 3 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
title: webview-cli
3+
description: "A webview CLI: render HTML, get back JSON"
4+
status: active
5+
date: 2026-06-05
6+
url: https://github.com/just-be-dev/webview-cli
7+
repository: https://github.com/just-be-dev/webview-cli
8+
code: p25b4
9+
---
10+
11+
::readme{repo="just-be-dev/webview-cli"}

src/content/url-manifest.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ codes:
2727
p2530:
2828
- /projects/pex
2929
- /pex
30+
p25b4:
31+
- /projects/webview-cli
3032
p3a89:
3133
- /projects/webview
3234
- /webview

src/loaders/github-readme.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,10 @@ export function githubReadmeLoader(): LiveLoader<ReadmeData, EntryFilter, Collec
153153

154154
const readmeData = await readmeResponse.json();
155155

156-
// Decode base64 content
157-
const readmeMarkdown = atob(readmeData.content);
156+
// Decode base64 content, reinterpreting the raw bytes as UTF-8 so
157+
// multibyte characters (em dashes, smart quotes, etc.) render correctly
158+
const bytes = Uint8Array.from(atob(readmeData.content), (c) => c.charCodeAt(0));
159+
const readmeMarkdown = new TextDecoder("utf-8").decode(bytes);
158160

159161
// Strip the first H1 heading
160162
const markdownWithoutH1 = stripFirstH1(readmeMarkdown);
@@ -163,9 +165,11 @@ export function githubReadmeLoader(): LiveLoader<ReadmeData, EntryFilter, Collec
163165
const renderer = createRenderer(owner, repo, branch);
164166

165167
// Parse markdown to HTML using marked
168+
// Match GitHub's README rendering: single newlines within a paragraph
169+
// collapse to spaces rather than becoming hard <br> breaks
166170
marked.setOptions({
167171
gfm: true,
168-
breaks: true,
172+
breaks: false,
169173
renderer: renderer,
170174
});
171175
const renderedHtml = await marked.parse(markdownWithoutH1);

0 commit comments

Comments
 (0)