<feed xmlns='http://www.w3.org/2005/Atom'>
<title>cgithub.git/views/_tree.eta, branch main</title>
<subtitle>GitHub alternative frontend</subtitle>
<id>http://git.mou.fo/2026/cgithub.git/atom/views/_tree.eta?h=main</id>
<link rel='self' href='http://git.mou.fo/2026/cgithub.git/atom/views/_tree.eta?h=main'/>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/cgithub.git/'/>
<updated>2026-08-11T21:37:02Z</updated>
<entry>
<title>Keep the ref picker on the current view and path</title>
<updated>2026-08-11T21:37:02Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-08-11T17:32:44Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/cgithub.git/commit/?id=32ed69b43aeca42e88ab37187246e1035d4c933f'/>
<id>urn:sha1:32ed69b43aeca42e88ab37187246e1035d4c933f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Mitigate placeholder layout shift</title>
<updated>2026-08-11T17:04:49Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-08-11T16:54:27Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/cgithub.git/commit/?id=d2c94ae32ff8d88f438d0e3348ca4f4a81f7bdd7'/>
<id>urn:sha1:d2c94ae32ff8d88f438d0e3348ca4f4a81f7bdd7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add language percentages to repo pages</title>
<updated>2026-08-11T12:13:58Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-08-11T12:09:47Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/cgithub.git/commit/?id=b43ce92c7b16bdefedb7c4c2aef41f9417f1ddf6'/>
<id>urn:sha1:b43ce92c7b16bdefedb7c4c2aef41f9417f1ddf6</id>
<content type='text'>
GitHub no longer server-renders the repository sidebar; its React UI
lazily fetches /:owner/:repo/_sidebar as JSON, which carries the
language breakdown (name, percentage, color). getGitHubLanguages() uses
that endpoint, and a new /api/:owner/:repo/languages fragment route
renders the bar and legend the same way refs and latest-commit already
work, so repo page loads still cost a single scrape.

The latest-commit placeholder loader in refs.js is generalized over
.placeholder[data-src] so both placeholders share it.

Co-Authored-By: Claude Opus 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add async branch/tag dropdown and latest-commit bar</title>
<updated>2026-07-23T03:25:26Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-07-21T21:46:58Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/cgithub.git/commit/?id=ecd01c4617ec0a6af05cfc4388bdc82986f25961'/>
<id>urn:sha1:ecd01c4617ec0a6af05cfc4388bdc82986f25961</id>
<content type='text'>
Adds two lazily-fetched UI pieces to match vanilla GitHub while keeping
initial page loads plain server-rendered HTML: a branch/tag selector
(native &lt;dialog&gt;, CSS anchor-positioned to its button, light-dismissed
via closedby="any") and a latest-commit bar above the file listing.
Both are populated by new /api/:owner/:repo/refs/:type and
/api/:owner/:repo/latest-commit/:branch/:path routes; the latter calls
GitHub's own /latest-commit JSON endpoint (the same one the React UI
uses) rather than scraping the full commit history page.
</content>
</entry>
<entry>
<title>Replace null overview files with HTML comments</title>
<updated>2026-07-15T05:46:06Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-07-15T05:46:06Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/cgithub.git/commit/?id=0f4681d55b9d865a4e860fb3f28203ffd0bdc034'/>
<id>urn:sha1:0f4681d55b9d865a4e860fb3f28203ffd0bdc034</id>
<content type='text'>
Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Split branch and path bread crumbs into separate section</title>
<updated>2026-01-27T22:21:42Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-01-27T21:58:56Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/cgithub.git/commit/?id=8fec0b99fbe193326d25fc107e0c625dcf05fd12'/>
<id>urn:sha1:8fec0b99fbe193326d25fc107e0c625dcf05fd12</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Append / to directories in tree listings</title>
<updated>2026-01-26T18:37:11Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-01-26T18:27:28Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/cgithub.git/commit/?id=db8127f488096663147f05404c79a1732b8b7527'/>
<id>urn:sha1:db8127f488096663147f05404c79a1732b8b7527</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Overview (README) in trees</title>
<updated>2026-01-26T18:13:12Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-01-26T16:47:06Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/cgithub.git/commit/?id=ae49c53b8b963878f1b13881c558cea121071944'/>
<id>urn:sha1:ae49c53b8b963878f1b13881c558cea121071944</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Use Phosphor Icons</title>
<updated>2026-01-25T22:54:55Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-01-25T22:24:19Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/cgithub.git/commit/?id=99d49959148251151b5121f45d26ae0ac5694120'/>
<id>urn:sha1:99d49959148251151b5121f45d26ae0ac5694120</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Repository page with info</title>
<updated>2026-01-25T22:46:15Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-01-25T21:27:48Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/cgithub.git/commit/?id=7132094f28ca2dc08c32f207ade9c63a28952115'/>
<id>urn:sha1:7132094f28ca2dc08c32f207ade9c63a28952115</id>
<content type='text'>
</content>
</entry>
</feed>
