<feed xmlns='http://www.w3.org/2005/Atom'>
<title>neko, branch claude/fix-open-tickets-IVV1C</title>
<subtitle>self-hosted, single user rss reader</subtitle>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/'/>
<entry>
<title>Update thicket tickets: close resolved tickets, add future work</title>
<updated>2026-02-17T06:47:29+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-17T06:47:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=93999ee6507d9c381b96dce58602e22280709832'/>
<id>93999ee6507d9c381b96dce58602e22280709832</id>
<content type='text'>
Closed: NK-t8qnrh, NK-mcl01m, NK-pbqvke, NK-z1czaq, NK-ekxfvv,
        NK-tktg7s, NK-ax2vlc, NK-26sdqp
Created: NK-u9dlcx (frontend linting), NK-2ylt2b (dark mode tests),
         NK-q7a6kb (safehttp proxy bypass test), NK-0fjzr6 (stream benchmark)

https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Closed: NK-t8qnrh, NK-mcl01m, NK-pbqvke, NK-z1czaq, NK-ekxfvv,
        NK-tktg7s, NK-ax2vlc, NK-26sdqp
Created: NK-u9dlcx (frontend linting), NK-2ylt2b (dark mode tests),
         NK-q7a6kb (safehttp proxy bypass test), NK-0fjzr6 (stream benchmark)

https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
</pre>
</div>
</content>
</entry>
<entry>
<title>Add regression tests for NK-t8qnrh, NK-mcl01m, NK-z1czaq (NK-26sdqp)</title>
<updated>2026-02-17T06:45:14+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-17T06:45:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=28f996707d8af2a1c9db20000f8581382845b7b6'/>
<id>28f996707d8af2a1c9db20000f8581382845b7b6</id>
<content type='text'>
- NK-t8qnrh: test that item-description renders links in feed items
- NK-mcl01m: test sidebar section order (filters → search → feeds → tags),
  and presence of "+ new" link
- NK-z1czaq: test that sidebar and main-content are siblings (overlay layout)
- Import renderLayout and createFeedItem into regression test suite

https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- NK-t8qnrh: test that item-description renders links in feed items
- NK-mcl01m: test sidebar section order (filters → search → feeds → tags),
  and presence of "+ new" link
- NK-z1czaq: test that sidebar and main-content are siblings (overlay layout)
- Import renderLayout and createFeedItem into regression test suite

https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
</pre>
</div>
</content>
</entry>
<entry>
<title>Update DOCS/benchmarks.md with 2026-02-17 run (NK-ax2vlc)</title>
<updated>2026-02-17T06:41:53+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-17T06:41:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=dd1cbecc5e1aa3c789e0ad881920e3d20f6d8985'/>
<id>dd1cbecc5e1aa3c789e0ad881920e3d20f6d8985</id>
<content type='text'>
- Fresh benchmark data on amd64 Intel Xeon (previous was arm64)
- Highlight new full_content benchmarks: 39% memory, 40% speed improvement
  from excluding full_content in list views (validates NK-k9otuy fix)
- Update frontend perf results (all pass, DOM insertion ~324ms)
- Note safehttp proxy fix in changes since last run

https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Fresh benchmark data on amd64 Intel Xeon (previous was arm64)
- Highlight new full_content benchmarks: 39% memory, 40% speed improvement
  from excluding full_content in list views (validates NK-k9otuy fix)
- Update frontend perf results (all pass, DOM insertion ~324ms)
- Note safehttp proxy fix in changes since last run

https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
</pre>
</div>
</content>
</entry>
<entry>
<title>Re-enable GitHub CI with updated paths (NK-tktg7s)</title>
<updated>2026-02-17T06:36:50+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-17T06:36:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=dcda4db1e3424407c3ce13ae9b901eb12d2b7326'/>
<id>dcda4db1e3424407c3ce13ae9b901eb12d2b7326</id>
<content type='text'>
- Re-enable push/PR triggers on master branch
- Frontend job: use ./frontend-vanilla (was ./frontend, which no longer exists)
- ui-check: check web/dist/v3/ (was web/dist/v2/)
- Backend dummy assets: create web/dist/v3 (was web/dist/v2)
- Remove frontend lint step (no lint script in frontend-vanilla)
- Remove E2E job (disabled in Makefile, no playwright setup in v3)

https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Re-enable push/PR triggers on master branch
- Frontend job: use ./frontend-vanilla (was ./frontend, which no longer exists)
- ui-check: check web/dist/v3/ (was web/dist/v2/)
- Backend dummy assets: create web/dist/v3 (was web/dist/v2)
- Remove frontend lint step (no lint script in frontend-vanilla)
- Remove E2E job (disabled in Makefile, no playwright setup in v3)

https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
</pre>
</div>
</content>
</entry>
<entry>
<title>Add full_content benchmarks to quantify payload savings (NK-ekxfvv)</title>
<updated>2026-02-17T06:35:16+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-17T06:35:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=5f46e1222417503b710bef375831ee75dfbcb3fc'/>
<id>5f46e1222417503b710bef375831ee75dfbcb3fc</id>
<content type='text'>
Add BenchmarkFilter_15Items_WithFullContent, BenchmarkFilter_15Items_IncludeFullContent,
and BenchmarkFilter_LargeDataset_WithFullContent. Items are seeded with realistic
~2KB full_content. Results show excluding full_content reduces B/op by ~40%
(363KB vs 595KB for 15 items).

https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add BenchmarkFilter_15Items_WithFullContent, BenchmarkFilter_15Items_IncludeFullContent,
and BenchmarkFilter_LargeDataset_WithFullContent. Items are seeded with realistic
~2KB full_content. Results show excluding full_content reduces B/op by ~40%
(363KB vs 595KB for 15 items).

https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
</pre>
</div>
</content>
</entry>
<entry>
<title>v3 UI: Sidebar always overlays content, never shifts it (NK-z1czaq)</title>
<updated>2026-02-17T06:32:26+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-17T06:32:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=75db4044230130366f3b213f62974c6d9633e39c'/>
<id>75db4044230130366f3b213f62974c6d9633e39c</id>
<content type='text'>
Make sidebar position: fixed on desktop, same as mobile. Content area
fills full viewport width and items remain centered regardless of sidebar
state. Easy-to-revert CONTENT CENTERING PARAMETER comment added.

https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Make sidebar position: fixed on desktop, same as mobile. Content area
fills full viewport width and items remain centered regardless of sidebar
state. Easy-to-revert CONTENT CENTERING PARAMETER comment added.

https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
</pre>
</div>
</content>
</entry>
<entry>
<title>v3 UI: Fix dark mode visual bugs (NK-pbqvke)</title>
<updated>2026-02-17T06:30:56+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-17T06:30:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=02b452bcf524bc28ce4bb80e6422043e84b8d879'/>
<id>02b452bcf524bc28ce4bb80e6422043e84b8d879</id>
<content type='text'>
- Sidebar uses grey background with dark text in dark mode
- Sidebar toggle has no background in dark mode
- Sidebar search input uses light bg with dark text in dark mode
- item-description links use correct color (--link-color = #5ac8fa in dark)
  and no underline (fixed in prior commit)

https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Sidebar uses grey background with dark text in dark mode
- Sidebar toggle has no background in dark mode
- Sidebar search input uses light bg with dark text in dark mode
- item-description links use correct color (--link-color = #5ac8fa in dark)
  and no underline (fixed in prior commit)

https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
</pre>
</div>
</content>
</entry>
<entry>
<title>v3 UI: Reorder sidebar sections per ticket NK-mcl01m</title>
<updated>2026-02-17T06:29:08+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-17T06:29:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=71da9f0ef43b70909e61e462ecaab663ffa44d9e'/>
<id>71da9f0ef43b70909e61e462ecaab663ffa44d9e</id>
<content type='text'>
New order: filters (Unread/All/Starred) → search → "+ new" → Feeds → Tags
Previously: search → filters → Tags → Feeds

Also adjust sidebar-search margin now that it's inside the scroll area.

https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
New order: filters (Unread/All/Starred) → search → "+ new" → Feeds → Tags
Previously: search → filters → Tags → Feeds

Also adjust sidebar-search margin now that it's inside the scroll area.

https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
</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>more tickets for claude</title>
<updated>2026-02-17T06:17:19+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@trenchant.org</email>
</author>
<published>2026-02-17T06:17:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=c15995fe944a6e8f3e68cf0c44fd454e53f21081'/>
<id>c15995fe944a6e8f3e68cf0c44fd454e53f21081</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
