<feed xmlns='http://www.w3.org/2005/Atom'>
<title>neko/api, branch claude/improve-test-coverage-iBkwc</title>
<subtitle>self-hosted, single user rss reader</subtitle>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/'/>
<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>Add tests for CSRF exclusions, Filter includeContent, multi-feed, and routing</title>
<updated>2026-02-16T23:31:54+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-16T23:31:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=5f5f8be8c6ca78f5d61372544bb24d692d9597f0'/>
<id>5f5f8be8c6ca78f5d61372544bb24d692d9597f0</id>
<content type='text'>
- CSRF: test excluded paths (/api/login, /api/logout), PUT/DELETE methods
- Item model: test Filter includeContent flag, ItemById returns content,
  multiple feed_ids filtering
- API: test read_filter=all param, feed_ids comma-separated filter,
  full_content exclusion from stream
- Routing: add v3 frontend route test

https://claude.ai/code/session_019Z4VJxzY7tcAuNkPAkvry9
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- CSRF: test excluded paths (/api/login, /api/logout), PUT/DELETE methods
- Item model: test Filter includeContent flag, ItemById returns content,
  multiple feed_ids filtering
- API: test read_filter=all param, feed_ids comma-separated filter,
  full_content exclusion from stream
- Routing: add v3 frontend route test

https://claude.ai/code/session_019Z4VJxzY7tcAuNkPAkvry9
</pre>
</div>
</content>
</entry>
<entry>
<title>Exclude full_content from stream list API responses</title>
<updated>2026-02-16T23:03:41+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-16T23:03:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=f67c07b178cd90539f1cc934def5a99be203e44a'/>
<id>f67c07b178cd90539f1cc934def5a99be203e44a</id>
<content type='text'>
The /stream endpoint now skips selecting full_content and header_image
from the database, reducing memory allocation and response payload size
for list views. Full content remains available via /item/:id endpoint.

Adds omitempty to JSON tags so empty fields are omitted from responses,
and a test verifying full_content is excluded from stream responses.

https://claude.ai/code/session_019Z4VJxzY7tcAuNkPAkvry9
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The /stream endpoint now skips selecting full_content and header_image
from the database, reducing memory allocation and response payload size
for list views. Full content remains available via /item/:id endpoint.

Adds omitempty to JSON tags so empty fields are omitted from responses,
and a test verifying full_content is excluded from stream responses.

https://claude.ai/code/session_019Z4VJxzY7tcAuNkPAkvry9
</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>feature: implement full OPML and Text import/export (fixing NK-r6nhj0)</title>
<updated>2026-02-14T17:42:14+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-14T17:42:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=6fa13a06411048f3217397f4285b3e64e7b9ee58'/>
<id>6fa13a06411048f3217397f4285b3e64e7b9ee58</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor: project structure, implement dependency injection, and align v2 UI with v1</title>
<updated>2026-02-14T16:58:38+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-14T16:58:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=e3c379d069ffa9661561d25cdbf2f5894a2f8ee8'/>
<id>e3c379d069ffa9661561d25cdbf2f5894a2f8ee8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>chore: cleanup ignored files</title>
<updated>2026-02-14T02:43:55+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-14T02:43:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=b7f2a8ecf06a3ae190cab9a26e157dd2c586f7e7'/>
<id>b7f2a8ecf06a3ae190cab9a26e157dd2c586f7e7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(backend): improve testability and add tests (NK-6q9nyg)</title>
<updated>2026-02-14T02:43:03+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-14T02:43:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=21b4eec6c1e096573bcd5f2079bc21e23a960621'/>
<id>21b4eec6c1e096573bcd5f2079bc21e23a960621</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
