<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nebbet.no/internal, branch main</title>
<subtitle>[no description]</subtitle>
<id>https://git.ivar.systems/nebbet.no/atom?h=main</id>
<link rel='self' href='https://git.ivar.systems/nebbet.no/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.ivar.systems/nebbet.no/'/>
<updated>2026-04-04T15:06:38Z</updated>
<entry>
<title>feat: configure EditorJS ImageTool upload endpoint</title>
<updated>2026-04-04T15:06:38Z</updated>
<author>
<name>ivar</name>
<email>i@oiee.no</email>
</author>
<published>2026-04-04T15:06:38Z</published>
<link rel='alternate' type='text/html' href='https://git.ivar.systems/nebbet.no/commit/?id=08eb57a647c9392a773cfb7937102fb2b4271fc3'/>
<id>urn:sha1:08eb57a647c9392a773cfb7937102fb2b4271fc3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: wire MediaHandler routes and govips lifecycle</title>
<updated>2026-04-04T14:51:05Z</updated>
<author>
<name>ivar</name>
<email>i@oiee.no</email>
</author>
<published>2026-04-04T14:51:05Z</published>
<link rel='alternate' type='text/html' href='https://git.ivar.systems/nebbet.no/commit/?id=87deaec8c519ee477439922f1cbecb8c90cbe5af'/>
<id>urn:sha1:87deaec8c519ee477439922f1cbecb8c90cbe5af</id>
<content type='text'>
- Add RegisterUploadRoute to admin Server (POST /admin/upload/image, auth-protected)
- Import govips/v2 and internal/media in main.go
- Replace static /media/ file handler with mediaSrv.HandleServe for on-the-fly image conversion
- Call vips.Startup/Shutdown around server lifetime

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: close error propagation, remove GIF, unexport storageDir</title>
<updated>2026-04-04T14:49:36Z</updated>
<author>
<name>ivar</name>
<email>i@oiee.no</email>
</author>
<published>2026-04-04T14:49:36Z</published>
<link rel='alternate' type='text/html' href='https://git.ivar.systems/nebbet.no/commit/?id=7de11c5ca03fcfda6ec3d39c5340a317ae77e2d5'/>
<id>urn:sha1:7de11c5ca03fcfda6ec3d39c5340a317ae77e2d5</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat: add MediaHandler for image upload and on-the-fly serving</title>
<updated>2026-04-04T14:46:19Z</updated>
<author>
<name>ivar</name>
<email>i@oiee.no</email>
</author>
<published>2026-04-04T14:46:19Z</published>
<link rel='alternate' type='text/html' href='https://git.ivar.systems/nebbet.no/commit/?id=f45d85cf59d13d419f18b98d25f8e3b8cf17d9e1'/>
<id>urn:sha1:f45d85cf59d13d419f18b98d25f8e3b8cf17d9e1</id>
<content type='text'>
Implements HandleUpload (EditorJS-compatible multipart endpoint) and
HandleServe (on-the-fly WebP/JPEG conversion with width-based resizing
and file-system caching) backed by govips/ConvertAndResize.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>refactor: consolidate format validation into switch default</title>
<updated>2026-04-04T14:43:33Z</updated>
<author>
<name>ivar</name>
<email>i@oiee.no</email>
</author>
<published>2026-04-04T14:43:33Z</published>
<link rel='alternate' type='text/html' href='https://git.ivar.systems/nebbet.no/commit/?id=0baeaa05d82b83cc290936b1c3068a7f0761efb5'/>
<id>urn:sha1:0baeaa05d82b83cc290936b1c3068a7f0761efb5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: add govips ConvertAndResize wrapper</title>
<updated>2026-04-04T14:41:39Z</updated>
<author>
<name>ivar</name>
<email>i@oiee.no</email>
</author>
<published>2026-04-04T14:41:39Z</published>
<link rel='alternate' type='text/html' href='https://git.ivar.systems/nebbet.no/commit/?id=3ffe741c0b8032f65d3b5e1770b840dc34bbb72f'/>
<id>urn:sha1:3ffe741c0b8032f65d3b5e1770b840dc34bbb72f</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: make slug rename and content update atomic via RenameAndUpsertPost</title>
<updated>2026-04-04T14:36:18Z</updated>
<author>
<name>ivar</name>
<email>i@oiee.no</email>
</author>
<published>2026-04-04T14:36:18Z</published>
<link rel='alternate' type='text/html' href='https://git.ivar.systems/nebbet.no/commit/?id=0d8f53520a2143b22e2246ab1ec25e0860e90dad'/>
<id>urn:sha1:0d8f53520a2143b22e2246ab1ec25e0860e90dad</id>
<content type='text'>
Previously RenamePost + UpsertPost were two separate DB calls; a failure
between them left the post at the new slug with stale content. The new
RenameAndUpsertPost method does both in a single transaction.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>.</title>
<updated>2026-04-04T14:34:46Z</updated>
<author>
<name>ivar</name>
<email>i@oiee.no</email>
</author>
<published>2026-04-04T14:34:46Z</published>
<link rel='alternate' type='text/html' href='https://git.ivar.systems/nebbet.no/commit/?id=a6355e7a6530af3335c4cd8af05f1e9c8b978169'/>
<id>urn:sha1:a6355e7a6530af3335c4cd8af05f1e9c8b978169</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: remove spurious os.IsNotExist check on DB error in handleDelete</title>
<updated>2026-04-04T14:33:49Z</updated>
<author>
<name>ivar</name>
<email>i@oiee.no</email>
</author>
<published>2026-04-04T14:33:49Z</published>
<link rel='alternate' type='text/html' href='https://git.ivar.systems/nebbet.no/commit/?id=8a093aacd162d3fd9f142b53aab9edfa061fd66a'/>
<id>urn:sha1:8a093aacd162d3fd9f142b53aab9edfa061fd66a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: support slug editing and rename in admin UI with redirect and cache invalidation</title>
<updated>2026-04-04T14:31:32Z</updated>
<author>
<name>ivar</name>
<email>i@oiee.no</email>
</author>
<published>2026-04-04T14:31:32Z</published>
<link rel='alternate' type='text/html' href='https://git.ivar.systems/nebbet.no/commit/?id=275d6fce19a33b68abb22ed41ded58fa65df1834'/>
<id>urn:sha1:275d6fce19a33b68abb22ed41ded58fa65df1834</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
