<feed xmlns='http://www.w3.org/2005/Atom'>
<title>neko/web, 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>Complete V2 removal from Makefile and check in updated V3 production assets</title>
<updated>2026-02-17T04:37:33+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-17T04:37:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=b9d6416f229340a03202c124a39a0e5160664031'/>
<id>b9d6416f229340a03202c124a39a0e5160664031</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove legacy V2 React frontend and update build/test scripts to focus on Vanilla JS (V3)</title>
<updated>2026-02-17T03:40:10+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-17T03:37:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=cba29e6aae637b04ff6eaf28f74bc15b6242b9ea'/>
<id>cba29e6aae637b04ff6eaf28f74bc15b6242b9ea</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix CSP violation on login page by moving inline script to external file</title>
<updated>2026-02-17T03:01:17+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-17T03:01:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=e8a4f637dfa10510b350b95efaa4b5eb9a8f6f28'/>
<id>e8a4f637dfa10510b350b95efaa4b5eb9a8f6f28</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Update frontend build artifacts and fix test lint errors</title>
<updated>2026-02-17T01:11:59+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-17T01:11:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=9d1f2f094a291b8dc5ca8dc006a4f6169d6b873c'/>
<id>9d1f2f094a291b8dc5ca8dc006a4f6169d6b873c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix scroll-to-read functionality across all UIs (V1, V2, V3)</title>
<updated>2026-02-17T00:35:38+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-17T00:35:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=72e131f9c273d15e8d3b5c8a9320ab7fb1d533d4'/>
<id>72e131f9c273d15e8d3b5c8a9320ab7fb1d533d4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<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>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>Enhance CSRF protection for login page</title>
<updated>2026-02-16T22:02:48+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-16T22:02:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=2e459c911031669080bc110059cf2b4b19c5379d'/>
<id>2e459c911031669080bc110059cf2b4b19c5379d</id>
<content type='text'>
Login form now includes a CSRF token from the cookie as a hidden form
field. The CSRF middleware accepts tokens from either the X-CSRF-Token
header (for JS clients) or the csrf_token form field (for HTML forms).
Removed /login from the CSRF exclusion list so login POSTs are now
validated.

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>
Login form now includes a CSRF token from the cookie as a hidden form
field. The CSRF middleware accepts tokens from either the X-CSRF-Token
header (for JS clients) or the csrf_token form field (for HTML forms).
Removed /login from the CSRF exclusion list so login POSTs are now
validated.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>v3 ui: require 100% visibility before marking items as read</title>
<updated>2026-02-16T19:13:22+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-16T19:13:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=0b08b2fb49827399ff0652bc20d5f71e2066025c'/>
<id>0b08b2fb49827399ff0652bc20d5f71e2066025c</id>
<content type='text'>
Change IntersectionObserver threshold from 0.5 to 1.0 so items are only
marked as read when fully scrolled into view, reducing accidental
mark-as-read during fast scrolling.

Also fix unused Category import in perf test and add thicket config.json
to repository so future agents can use thicket CLI commands.

Closes NK-s2g59a

https://claude.ai/code/session_019Z4VJxzY7tcAuNkPAkvry9
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change IntersectionObserver threshold from 0.5 to 1.0 so items are only
marked as read when fully scrolled into view, reducing accidental
mark-as-read during fast scrolling.

Also fix unused Category import in perf test and add thicket config.json
to repository so future agents can use thicket CLI commands.

Closes NK-s2g59a

https://claude.ai/code/session_019Z4VJxzY7tcAuNkPAkvry9
</pre>
</div>
</content>
</entry>
</feed>
