<feed xmlns='http://www.w3.org/2005/Atom'>
<title>neko/internal, 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>Add performance benchmarks, stress tests, and frontend perf tests</title>
<updated>2026-02-16T18:15:47+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-16T18:15:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=d4caf45b2b9ea6a3276de792cf6f73085e66b1ae'/>
<id>d4caf45b2b9ea6a3276de792cf6f73085e66b1ae</id>
<content type='text'>
Go benchmarks cover item CRUD/filter/sanitization, API endpoints (stream,
item update, feed list), middleware stack (gzip, security headers, CSRF),
and crawler pipeline (feed parsing, mocked crawl). Stress tests verify
concurrent reads/writes and large dataset handling. Frontend perf tests
measure template generation, DOM insertion, and store event throughput.

New Makefile targets: bench, bench-short, stress, test-perf.

https://claude.ai/code/session_01ChDVWFDrQoFjMYHpaLGr9s
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Go benchmarks cover item CRUD/filter/sanitization, API endpoints (stream,
item update, feed list), middleware stack (gzip, security headers, CSRF),
and crawler pipeline (feed parsing, mocked crawl). Stress tests verify
concurrent reads/writes and large dataset handling. Frontend perf tests
measure template generation, DOM insertion, and store event throughput.

New Makefile targets: bench, bench-short, stress, test-perf.

https://claude.ai/code/session_01ChDVWFDrQoFjMYHpaLGr9s
</pre>
</div>
</content>
</entry>
<entry>
<title>Backend: Support multi-feed filtering in stream API</title>
<updated>2026-02-15T22:09:39+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-15T22:09:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=1d3ad564df8cc09b16172901916bcef9abe31ab4'/>
<id>1d3ad564df8cc09b16172901916bcef9abe31ab4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Backend: Fix linting issues, improve error handling, and replace magic numbers</title>
<updated>2026-02-15T21:48:34+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-15T21:48:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=2327f93098b4278c93055a96224ae82cef60b083'/>
<id>2327f93098b4278c93055a96224ae82cef60b083</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Commit ticket updates and remaining backend lint fixes</title>
<updated>2026-02-15T16:49:46+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-15T16:49:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=038cdd6ae395eb4249ab1758d319f847beeb4549'/>
<id>038cdd6ae395eb4249ab1758d319f847beeb4549</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Create 'make check' unified workflow and fix various lint issues</title>
<updated>2026-02-15T16:41:08+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-15T16:41:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=ea5d89b47a5424fc81e99934183c0ad7a0cf2426'/>
<id>ea5d89b47a5424fc81e99934183c0ad7a0cf2426</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
