<feed xmlns='http://www.w3.org/2005/Atom'>
<title>neko, branch claude/thicket-ready-crank-RmQuI</title>
<subtitle>self-hosted, single user rss reader</subtitle>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/'/>
<entry>
<title>Remove circle styling from NEKO sidebar toggle button</title>
<updated>2026-02-16T23:45:10+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-16T23:45:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=575b394cb26c435422e8b8c6e411a703327d8b40'/>
<id>575b394cb26c435422e8b8c6e411a703327d8b40</id>
<content type='text'>
Strip border-radius, box-shadow, background, and backdrop-filter from
the sidebar toggle in both v2 and v3 frontends so the logo appears flat.

https://claude.ai/code/session_019Z4VJxzY7tcAuNkPAkvry9
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Strip border-radius, box-shadow, background, and backdrop-filter from
the sidebar toggle in both v2 and v3 frontends so the logo appears flat.

https://claude.ai/code/session_019Z4VJxzY7tcAuNkPAkvry9
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #7 from adammathes/claude/thicket-ready-crank-RmQuI</title>
<updated>2026-02-16T23:36:49+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-16T23:36:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=c538ccd5cd1d6960c894a2969ee49317009dc9ed'/>
<id>c538ccd5cd1d6960c894a2969ee49317009dc9ed</id>
<content type='text'>
More crank pulls from claude</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
More crank pulls from claude</pre>
</div>
</content>
</entry>
<entry>
<title>Add startup hook to install thicket CLI</title>
<updated>2026-02-16T23:35:07+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-16T23:35:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=80d132b1714aaa281a6532ff66892bfdb7d2c5c2'/>
<id>80d132b1714aaa281a6532ff66892bfdb7d2c5c2</id>
<content type='text'>
https://claude.ai/code/session_019Z4VJxzY7tcAuNkPAkvry9
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://claude.ai/code/session_019Z4VJxzY7tcAuNkPAkvry9
</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>Align sidebar CSS breakpoints with JS threshold at 1024px</title>
<updated>2026-02-16T23:28:59+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-16T23:28:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=ed1b953e1336aeda282b46acd1c5e21529fa0950'/>
<id>ed1b953e1336aeda282b46acd1c5e21529fa0950</id>
<content type='text'>
The sidebar default-closed JS logic used 1024px but CSS media queries
used 768px, causing inconsistent behavior on tablets. Updated all
sidebar-related breakpoints to 1024px/1025px to match.

https://claude.ai/code/session_019Z4VJxzY7tcAuNkPAkvry9
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The sidebar default-closed JS logic used 1024px but CSS media queries
used 768px, causing inconsistent behavior on tablets. Updated all
sidebar-related breakpoints to 1024px/1025px to match.

https://claude.ai/code/session_019Z4VJxzY7tcAuNkPAkvry9
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #6 from adammathes/claude/fix-mobile-scroll-read-yVmVk</title>
<updated>2026-02-16T23:25:12+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-16T23:25:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=feea1a814a212efd9b14b8f05e84104ace3c473a'/>
<id>feea1a814a212efd9b14b8f05e84104ace3c473a</id>
<content type='text'>
Fix mobile scroll not marking items as read in v3 UI</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix mobile scroll not marking items as read in v3 UI</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>Fix mobile scroll not marking items as read in v3 UI</title>
<updated>2026-02-16T22:58:54+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-16T22:58:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=4555ee294a5acdfbc4b1026d99df54d07c74ed97'/>
<id>4555ee294a5acdfbc4b1026d99df54d07c74ed97</id>
<content type='text'>
Two issues prevented IntersectionObserver from firing on mobile:
1. threshold: 1.0 required items to be 100% visible, but on mobile
   viewports items with descriptions are often taller than the screen
2. root: null used the viewport, but scrolling happens inside
   .main-content (overflow-y: auto) while body has overflow: hidden

Switched to "scrolled past" pattern: items are marked read when they
scroll above the viewport (like the working legacy UI). Set root to
the actual scroll container element.

https://claude.ai/code/session_01NSUnBzNrgQVUNg9PnugF7N
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Two issues prevented IntersectionObserver from firing on mobile:
1. threshold: 1.0 required items to be 100% visible, but on mobile
   viewports items with descriptions are often taller than the screen
2. root: null used the viewport, but scrolling happens inside
   .main-content (overflow-y: auto) while body has overflow: hidden

Switched to "scrolled past" pattern: items are marked read when they
scroll above the viewport (like the working legacy UI). Set root to
the actual scroll container element.

https://claude.ai/code/session_01NSUnBzNrgQVUNg9PnugF7N
</pre>
</div>
</content>
</entry>
<entry>
<title>more tickets</title>
<updated>2026-02-16T22:42:59+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@trenchant.org</email>
</author>
<published>2026-02-16T22:42:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=2321d5bcf17e416244e75f5727f0710f9cdd9a1a'/>
<id>2321d5bcf17e416244e75f5727f0710f9cdd9a1a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>v3: fix feed toggle from settings page, add navigation tests</title>
<updated>2026-02-16T22:07:12+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-16T22:07:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=ddbdf506164613cd68194a1406f6855ae9d7f22c'/>
<id>ddbdf506164613cd68194a1406f6855ae9d7f22c</id>
<content type='text'>
When on the settings page and clicking a feed that was previously
active, navigate to that feed instead of toggling back to home.
The toggle behavior now only applies when already viewing that feed.
Added tests for navigating from settings to feeds and tags.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When on the settings page and clicking a feed that was previously
active, navigate to that feed instead of toggling back to home.
The toggle behavior now only applies when already viewing that feed.
Added tests for navigating from settings to feeds and tags.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
