<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mono.git/cgithub/package.json, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>http://git.mou.fo/2026/mono.git/atom/cgithub/package.json?h=main</id>
<link rel='self' href='http://git.mou.fo/2026/mono.git/atom/cgithub/package.json?h=main'/>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/mono.git/'/>
<updated>2026-08-27T20:28:57Z</updated>
<entry>
<title>Move the workerd build allowance out of package.json</title>
<updated>2026-08-27T20:28:57Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-08-27T19:04:00Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/mono.git/commit/?id=1b9d13fce99b9d798dd604f402699bb47cb1627e'/>
<id>urn:sha1:1b9d13fce99b9d798dd604f402699bb47cb1627e</id>
<content type='text'>
pnpm 11 no longer reads the "pnpm" field in package.json and warns that
it ignored onlyBuiltDependencies, which would leave workerd's build
script unapproved and unrun on a fresh install. Its new home is
pnpm-workspace.yaml, which pnpm accepts without a packages key for a
single-package repo.

Co-Authored-By: Claude Opus 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01PbJ1wy2dNdjk7LpME4ud3J
</content>
</entry>
<entry>
<title>Redirect to GitHub with a meta refresh</title>
<updated>2026-08-11T15:57:29Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-08-11T15:39:01Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/mono.git/commit/?id=9731ebd1bece1187f943a29da474f4aed6e7ee3b'/>
<id>urn:sha1:9731ebd1bece1187f943a29da474f4aed6e7ee3b</id>
<content type='text'>
A browser extension redirects github.com to cgithub with declarative net
requests. Its rules match our HTTP redirects back to github.com too, so
those bounce straight back here and loop forever. A meta refresh makes
cgithub the initiator origin instead, which the extension's rules can
exclude, and its delay leaves a page the user can stop on.

Co-Authored-By: Claude Opus 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Show the build's commit in the page footer</title>
<updated>2026-08-11T12:38:30Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-08-11T12:37:25Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/mono.git/commit/?id=ab52f48e50d0dd242ad5b0cfbee9c458946cd427'/>
<id>urn:sha1:ab52f48e50d0dd242ad5b0cfbee9c458946cd427</id>
<content type='text'>
Workers can't shell out at request time, so the commit has to be baked
in before wrangler bundles the sources. compile-views.ts grows a second
job and becomes scripts/build.ts: alongside the precompiled views it
writes src/commit.generated.ts with `git describe --tags --always
--dirty`, which yields a bare short hash until the repo is tagged and
marks builds made from an unclean working copy.

Co-Authored-By: Claude Opus 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Deploy only to Cloudflare Workers</title>
<updated>2026-08-11T12:30:10Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-08-11T12:27:26Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/mono.git/commit/?id=2b4a69720b53480d82cf296ac5dbe4614d9470b9'/>
<id>urn:sha1:2b4a69720b53480d82cf296ac5dbe4614d9470b9</id>
<content type='text'>
The Node server entry, esbuild bundle, and Makefile rsync/systemd deploy
are gone; wrangler dev and wrangler deploy are the only paths now, so the
dev:cf/deploy:cf scripts take over the plain dev/deploy names. @hono/
node-server and esbuild drop out with src/index.ts, and the README's
systemd socket and nginx snippets go with them.

Co-Authored-By: Claude Opus 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add Cloudflare Workers deployment target</title>
<updated>2026-07-15T06:08:29Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-07-15T06:08:17Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/mono.git/commit/?id=9b556ffe6c0c0528697e15f7f4f35107de212ce1'/>
<id>urn:sha1:9b556ffe6c0c0528697e15f7f4f35107de212ce1</id>
<content type='text'>
Split routes into a shared createApp() (src/app.ts) used by both the
Node entry (src/index.ts) and a new Workers entry (src/worker.ts).
Workers disallow runtime code generation, so scripts/compile-views.ts
precompiles the Eta templates into src/views.generated.ts and rendering
switches from renderAsync to the sync render. Static files move to
public/static so Workers Static Assets can serve them; the Node build
and serveStatic root are updated to match.

Deploy with pnpm run deploy:cf, local dev with pnpm run dev:cf.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Parse release page HTML</title>
<updated>2026-02-21T05:21:57Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-02-21T05:21:35Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/mono.git/commit/?id=1435dea09882f110448b034d7cffa32d03e19a8f'/>
<id>urn:sha1:1435dea09882f110448b034d7cffa32d03e19a8f</id>
<content type='text'>
Fixes reading complex release descriptions that had unbalanced tags.

Written with Gemini.
</content>
</entry>
<entry>
<title>Propagate GitHub HTTP errors</title>
<updated>2026-01-27T17:51:04Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-01-27T16:23:11Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/mono.git/commit/?id=04bbba0a7b71f1fb090d3e3a73110a00c36bf765'/>
<id>urn:sha1:04bbba0a7b71f1fb090d3e3a73110a00c36bf765</id>
<content type='text'>
Render `error.eta` on HTTP error from GitHub.

Implemented with Gemini.
</content>
</entry>
<entry>
<title>MIT license</title>
<updated>2026-01-27T16:27:01Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-01-27T14:14:31Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/mono.git/commit/?id=1e339a892761b7a190c3548411ca0ec212cded53'/>
<id>urn:sha1:1e339a892761b7a190c3548411ca0ec212cded53</id>
<content type='text'>
</content>
</entry>
<entry>
<title>GitHub scraper test</title>
<updated>2026-01-27T16:27:01Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-01-26T20:36:23Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/mono.git/commit/?id=dac0a13f247fa17667ac5983ec65df0756e0829f'/>
<id>urn:sha1:dac0a13f247fa17667ac5983ec65df0756e0829f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Use Node native TypeScript elision</title>
<updated>2026-01-26T22:23:43Z</updated>
<author>
<name>Joe Mou</name>
<email>dev@mou.fo</email>
</author>
<published>2026-01-26T20:55:52Z</published>
<link rel='alternate' type='text/html' href='http://git.mou.fo/2026/mono.git/commit/?id=fee5c6f6438316a8d407699370729ac2d0abd9d1'/>
<id>urn:sha1:fee5c6f6438316a8d407699370729ac2d0abd9d1</id>
<content type='text'>
See https://nodejs.org/api/typescript.html#type-stripping
</content>
</entry>
</feed>
