<feed xmlns='http://www.w3.org/2005/Atom'>
<title>neko/internal/safehttp, branch claude/improve-image-proxy-5iY78</title>
<subtitle>self-hosted, single user rss reader</subtitle>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/'/>
<entry>
<title>fix: implement HTTP/2 fallback for SafeClient on protocol errors</title>
<updated>2026-02-18T16:06:42+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-18T16:06:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=64830820d23ba58b63509cb721e7551dd30c4997'/>
<id>64830820d23ba58b63509cb721e7551dd30c4997</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "fix: disable HTTP/2 in SafeClient to avoid unhandled response frame errors"</title>
<updated>2026-02-18T16:04:41+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-18T16:04:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=20337a80775d81a69d8019430bb1f3b0d450e259'/>
<id>20337a80775d81a69d8019430bb1f3b0d450e259</id>
<content type='text'>
This reverts commit ee3f5edab92b0ca14dc0b3c98862f721bddaf7d5.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit ee3f5edab92b0ca14dc0b3c98862f721bddaf7d5.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix: disable HTTP/2 in SafeClient to avoid unhandled response frame errors</title>
<updated>2026-02-18T16:01:45+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-18T16:01:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=ee3f5edab92b0ca14dc0b3c98862f721bddaf7d5'/>
<id>ee3f5edab92b0ca14dc0b3c98862f721bddaf7d5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Increase test coverage across lowest-coverage packages</title>
<updated>2026-02-18T06:18:28+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-18T06:18:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=269e44da41f9feed32214bbab6fc16ec88fffd85'/>
<id>269e44da41f9feed32214bbab6fc16ec88fffd85</id>
<content type='text'>
Major coverage improvements:
- safehttp: 46.7% -&gt; 93.3% (SafeDialer, redirect checking, SSRF protection)
- api: 81.8% -&gt; 96.4% (HandleImport 0% -&gt; 100%, stream errors, content types)
- importer: 85.3% -&gt; 94.7% (ImportFeeds dispatcher, OPML nesting, edge cases)
- cmd/neko: 77.1% -&gt; 85.4% (purge, secure-cookies, minutes, allow-local flags)

New tests added:
- Security regression tests (CSRF token uniqueness, mismatch rejection,
  auth cookie HttpOnly, security headers, API auth requirements)
- Stress tests for concurrent mixed operations and rapid state toggling
- SSRF protection tests for SafeDialer hostname resolution and redirect paths

https://claude.ai/code/session_01XUBh32rHpbYue1JYXSH64Q
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Major coverage improvements:
- safehttp: 46.7% -&gt; 93.3% (SafeDialer, redirect checking, SSRF protection)
- api: 81.8% -&gt; 96.4% (HandleImport 0% -&gt; 100%, stream errors, content types)
- importer: 85.3% -&gt; 94.7% (ImportFeeds dispatcher, OPML nesting, edge cases)
- cmd/neko: 77.1% -&gt; 85.4% (purge, secure-cookies, minutes, allow-local flags)

New tests added:
- Security regression tests (CSRF token uniqueness, mismatch rejection,
  auth cookie HttpOnly, security headers, API auth requirements)
- Stress tests for concurrent mixed operations and rapid state toggling
- SSRF protection tests for SafeDialer hostname resolution and redirect paths

https://claude.ai/code/session_01XUBh32rHpbYue1JYXSH64Q
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix link underlines in v3 UI and SSRF proxy bypass</title>
<updated>2026-02-17T06:27:32+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-17T06:27:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=fde324d1a764841debefedf588c4b06a3f73484c'/>
<id>fde324d1a764841debefedf588c4b06a3f73484c</id>
<content type='text'>
- Add text-decoration: none to .item-description a links in v3 CSS
  to match v1 style (no underlines on feed item content links)
- Fix safehttp to disable proxy on safe client; without this, HTTP
  proxy env vars bypass the DialContext SSRF check for IPs like
  10.0.0.1, causing TestSafeClient to fail

https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Add text-decoration: none to .item-description a links in v3 CSS
  to match v1 style (no underlines on feed item content links)
- Fix safehttp to disable proxy on safe client; without this, HTTP
  proxy env vars bypass the DialContext SSRF check for IPs like
  10.0.0.1, causing TestSafeClient to fail

https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
</pre>
</div>
</content>
</entry>
<entry>
<title>security: add HTTP security headers (fixing NK-7xuajb)</title>
<updated>2026-02-14T17:20:40+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-14T17:20:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=08032aab10f0e1429d25ecae1acf6c40d63e9ff4'/>
<id>08032aab10f0e1429d25ecae1acf6c40d63e9ff4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>security: mitigate SSRF in image proxy and feed fetcher (fixing NK-0ca7nq)</title>
<updated>2026-02-14T17:17:56+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-14T17:17:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=cac85dc06b519d9bd6db4d017d501dffbbd8bac4'/>
<id>cac85dc06b519d9bd6db4d017d501dffbbd8bac4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
