<feed xmlns='http://www.w3.org/2005/Atom'>
<title>neko, branch fix-image-proxy-dos-12392893234509318071</title>
<subtitle>self-hosted, single user rss reader</subtitle>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/'/>
<entry>
<title>Fix Unbounded Memory Usage in Image Proxy</title>
<updated>2026-02-21T03:01:51+00:00</updated>
<author>
<name>google-labs-jules[bot]</name>
<email>161369871+google-labs-jules[bot]@users.noreply.github.com</email>
</author>
<published>2026-02-21T03:01:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=72c80ac2ef7b81090cb95e397ea3893ad6d29258'/>
<id>72c80ac2ef7b81090cb95e397ea3893ad6d29258</id>
<content type='text'>
- Added `maxImageProxySize` constant (10MB) to limit memory usage.
- Used `io.LimitReader` in `imageProxyHandler` to enforce the limit.
- Added regression test `web/proxy_limit_test.go` to verify the fix.

Co-authored-by: adammathes &lt;868470+adammathes@users.noreply.github.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Added `maxImageProxySize` constant (10MB) to limit memory usage.
- Used `io.LimitReader` in `imageProxyHandler` to enforce the limit.
- Added regression test `web/proxy_limit_test.go` to verify the fix.

Co-authored-by: adammathes &lt;868470+adammathes@users.noreply.github.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix Unbounded Memory Usage in Image Proxy</title>
<updated>2026-02-18T16:22:00+00:00</updated>
<author>
<name>google-labs-jules[bot]</name>
<email>161369871+google-labs-jules[bot]@users.noreply.github.com</email>
</author>
<published>2026-02-18T16:22:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=ec3c0edbac371856fdaa414b016d1755bd1512c2'/>
<id>ec3c0edbac371856fdaa414b016d1755bd1512c2</id>
<content type='text'>
- Added `maxImageProxySize` constant (10MB) to limit memory usage.
- Used `io.LimitReader` in `imageProxyHandler` to enforce the limit.
- Added regression test `web/proxy_limit_test.go` to verify the fix.

Co-authored-by: adammathes &lt;868470+adammathes@users.noreply.github.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Added `maxImageProxySize` constant (10MB) to limit memory usage.
- Used `io.LimitReader` in `imageProxyHandler` to enforce the limit.
- Added regression test `web/proxy_limit_test.go` to verify the fix.

Co-authored-by: adammathes &lt;868470+adammathes@users.noreply.github.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix CI failure: Remove redundant 'disable' list in .golangci.yml</title>
<updated>2026-02-18T03:29:19+00:00</updated>
<author>
<name>google-labs-jules[bot]</name>
<email>161369871+google-labs-jules[bot]@users.noreply.github.com</email>
</author>
<published>2026-02-18T03:29:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=1c73fafe88f9a47c599d1d8107d2e7fc3c95909e'/>
<id>1c73fafe88f9a47c599d1d8107d2e7fc3c95909e</id>
<content type='text'>
- Removed the `disable` list from `.golangci.yml`.
- `disable-all: true` conflicts with specifying a list of linters to `disable`.
- Since we are already disabling all linters and then enabling specific ones, explicitly disabling `errcheck` is unnecessary and invalid configuration.

Co-authored-by: adammathes &lt;868470+adammathes@users.noreply.github.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Removed the `disable` list from `.golangci.yml`.
- `disable-all: true` conflicts with specifying a list of linters to `disable`.
- Since we are already disabling all linters and then enabling specific ones, explicitly disabling `errcheck` is unnecessary and invalid configuration.

Co-authored-by: adammathes &lt;868470+adammathes@users.noreply.github.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix CI failure: Remove invalid 'version' field from .golangci.yml</title>
<updated>2026-02-18T03:26:55+00:00</updated>
<author>
<name>google-labs-jules[bot]</name>
<email>161369871+google-labs-jules[bot]@users.noreply.github.com</email>
</author>
<published>2026-02-18T03:26:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=c34d119c25c46da78ed7d62a61790b144c7fec16'/>
<id>c34d119c25c46da78ed7d62a61790b144c7fec16</id>
<content type='text'>
- Removed `version: "2"` from `.golangci.yml`.
- This field is not supported in the configuration schema for `golangci-lint` v1.64.6, causing the validation error: `additional properties 'version' not allowed`.

Co-authored-by: adammathes &lt;868470+adammathes@users.noreply.github.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Removed `version: "2"` from `.golangci.yml`.
- This field is not supported in the configuration schema for `golangci-lint` v1.64.6, causing the validation error: `additional properties 'version' not allowed`.

Co-authored-by: adammathes &lt;868470+adammathes@users.noreply.github.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix CI failure: Downgrade golangci-lint to v1.64.6</title>
<updated>2026-02-18T03:24:22+00:00</updated>
<author>
<name>google-labs-jules[bot]</name>
<email>161369871+google-labs-jules[bot]@users.noreply.github.com</email>
</author>
<published>2026-02-18T03:24:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=321e5968fdffe894eed1b1dcbd5a45c1d81e5f81'/>
<id>321e5968fdffe894eed1b1dcbd5a45c1d81e5f81</id>
<content type='text'>
- Downgraded `golangci-lint-action` from v7 to v6.
- Changed `golangci-lint` version from `v2.10.1` to `v1.64.6` to restore compatibility with existing `.golangci.yml`.
- `v1.64.6` supports Go 1.24 and avoids breaking configuration changes introduced in v2.

Co-authored-by: adammathes &lt;868470+adammathes@users.noreply.github.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Downgraded `golangci-lint-action` from v7 to v6.
- Changed `golangci-lint` version from `v2.10.1` to `v1.64.6` to restore compatibility with existing `.golangci.yml`.
- `v1.64.6` supports Go 1.24 and avoids breaking configuration changes introduced in v2.

Co-authored-by: adammathes &lt;868470+adammathes@users.noreply.github.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix Unbounded Memory Usage in Image Proxy</title>
<updated>2026-02-18T03:20:37+00:00</updated>
<author>
<name>google-labs-jules[bot]</name>
<email>161369871+google-labs-jules[bot]@users.noreply.github.com</email>
</author>
<published>2026-02-18T03:20:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=a6974c3af00a66870424aa971ae4dd38c49847bf'/>
<id>a6974c3af00a66870424aa971ae4dd38c49847bf</id>
<content type='text'>
- Added `maxImageProxySize` constant (10MB) to limit memory usage.
- Used `io.LimitReader` in `imageProxyHandler` to enforce the limit.
- Added regression test `web/proxy_limit_test.go` to verify the fix.

Co-authored-by: adammathes &lt;868470+adammathes@users.noreply.github.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Added `maxImageProxySize` constant (10MB) to limit memory usage.
- Used `io.LimitReader` in `imageProxyHandler` to enforce the limit.
- Added regression test `web/proxy_limit_test.go` to verify the fix.

Co-authored-by: adammathes &lt;868470+adammathes@users.noreply.github.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #13 from adammathes/claude/add-css-themes-QGTmP</title>
<updated>2026-02-18T03:00:26+00:00</updated>
<author>
<name>Adam Mathes</name>
<email>adam@adammathes.com</email>
</author>
<published>2026-02-18T03:00:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=9db36ae402dbb74f7223a4efc8b2483086684e38'/>
<id>9db36ae402dbb74f7223a4efc8b2483086684e38</id>
<content type='text'>
Add 4 CSS style themes with runtime switcher</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add 4 CSS style themes with runtime switcher</pre>
</div>
</content>
</entry>
<entry>
<title>Replace sidebar style cycle button with 5 emoji icons</title>
<updated>2026-02-18T01:25:04+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-18T01:25:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=81c78496e1fa0701618254986e9ff17081a74f11'/>
<id>81c78496e1fa0701618254986e9ff17081a74f11</id>
<content type='text'>
Swap the single cycle button for individual emoji per theme:
○ Default, ◆ Refined, ▮ Terminal, ❧ Codex, ❀ Sakura.
Active theme gets a highlighted state. Separated from the
light/dark toggle with a thin divider.

https://claude.ai/code/session_01Jv3c8GdaDQMm5WYwHUJMVe
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Swap the single cycle button for individual emoji per theme:
○ Default, ◆ Refined, ▮ Terminal, ❧ Codex, ❀ Sakura.
Active theme gets a highlighted state. Separated from the
light/dark toggle with a thin divider.

https://claude.ai/code/session_01Jv3c8GdaDQMm5WYwHUJMVe
</pre>
</div>
</content>
</entry>
<entry>
<title>Refine themes, add sidebar controls, and theme docs</title>
<updated>2026-02-18T01:07:17+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-18T01:07:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=042c8ba30a6cbc1915fce8910de31af86253a044'/>
<id>042c8ba30a6cbc1915fce8910de31af86253a044</id>
<content type='text'>
Refined: softer dark-mode link color (#a0c4e8), fix export button
vertical alignment with inline-flex, tighten settings page spacing
(reduce gaps from 3rem to 1.5rem).

Terminal: switch accent from cyan to green (#4ae54a dark / #1a7a2e
light), add proper light mode with pale steel background, scanlines
only in dark mode.

Sidebar: add quick-access controls in footer — moon/sun icon toggles
light/dark, circle icon cycles through style themes showing current
name. Both update reactively on state change.

Add THEMES.md with full documentation on creating new themes:
variable reference, selector guide, light/dark mode tips, and the
registration process.

https://claude.ai/code/session_01Jv3c8GdaDQMm5WYwHUJMVe
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Refined: softer dark-mode link color (#a0c4e8), fix export button
vertical alignment with inline-flex, tighten settings page spacing
(reduce gaps from 3rem to 1.5rem).

Terminal: switch accent from cyan to green (#4ae54a dark / #1a7a2e
light), add proper light mode with pale steel background, scanlines
only in dark mode.

Sidebar: add quick-access controls in footer — moon/sun icon toggles
light/dark, circle icon cycles through style themes showing current
name. Both update reactively on state change.

Add THEMES.md with full documentation on creating new themes:
variable reference, selector guide, light/dark mode tips, and the
registration process.

https://claude.ai/code/session_01Jv3c8GdaDQMm5WYwHUJMVe
</pre>
</div>
</content>
</entry>
<entry>
<title>Add 4 CSS style themes with runtime switcher</title>
<updated>2026-02-17T23:58:59+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-02-17T23:48:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adammathes.com/neko/commit/?id=18a85a30f4282b5d07528eb8e1dd8ff7617190d2'/>
<id>18a85a30f4282b5d07528eb8e1dd8ff7617190d2</id>
<content type='text'>
Adds a style theme system that layers additional CSS files on top of the
base stylesheet. Themes are loaded/unloaded dynamically via &lt;link&gt; tags.

- Default: existing look, unchanged
- Refined: typographic rhythm fixes, consistent spacing on settings page
- Terminal: monospace, dark phosphor CRT aesthetic (scanlines, cyan glow)
- Codex: book/Tufte-inspired with warm paper tones, serif type, fleurons
- Sakura: Japanese-inspired calm aesthetic (named for neko = cat)

Each theme supports both light and dark mode. Style selection persists
in localStorage and is independent of the light/dark toggle.

https://claude.ai/code/session_01Jv3c8GdaDQMm5WYwHUJMVe
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adds a style theme system that layers additional CSS files on top of the
base stylesheet. Themes are loaded/unloaded dynamically via &lt;link&gt; tags.

- Default: existing look, unchanged
- Refined: typographic rhythm fixes, consistent spacing on settings page
- Terminal: monospace, dark phosphor CRT aesthetic (scanlines, cyan glow)
- Codex: book/Tufte-inspired with warm paper tones, serif type, fleurons
- Sakura: Japanese-inspired calm aesthetic (named for neko = cat)

Each theme supports both light and dark mode. Style selection persists
in localStorage and is independent of the light/dark toggle.

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